使用 TUniTable 的性能问题
我正在将用 Delphi 编写的 Paradox 数据库应用程序转换为使用 SQL Server 2008 R2。我们使用 Devart 的 UNIDAC 组件来访问数据库/表。但是,我发现性能相当慢。例如,在 Paradox 版本中,打开一个包含 100,000 条记录的表(使用 TTable)时或多或少是即时的,但 SQL Server(使用 TUniTable)大约需要 2 秒。现在我知道这看起来并不多,但是在创建表单时打开了 10 个 TUniTable 数据集,所有这些数据集都包含大约相同数量的记录,因此目前打开它们只需要不到 20 秒的时间。有人有任何性能提示吗?
我正在使用德尔福2007
I'm in the process of converting a Paradox database application written in Delphi to use SQL Server 2008 R2. We are using the UNIDAC components from Devart to access the database/tables. However, I am finding the performance rather slow. For example, in the Paradox version it is more or less instant when it opens up a table (Using TTable) with 100,000 records, but the SQL Server (Using TUniTable) take approximately 2 seconds. Now I know this doesn't seem a lot but there are 10 TUniTable datasets which open up on form creation, all of which contain around the same number of records, so at present it is taking just under 20 seconds to open them all. Does anyone have any performance tips?
I'm using Delphi 2007
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
恕我直言,UniDAC
TUniTable
只是TUniQuery
的包装。TUniTable
open 可能会导致获取 SQL Server 上的所有记录。不知道如何操作,但尝试更改 SQL Server 游标类型和/或位置。如果还不算晚,那么考虑使用 AnyDAC 和 TADTable。它使用“实时数据窗口”技术,允许打开和浏览大型表而不会出现明显的延迟,例如
Open
和Last
调用将始终很快。我们将一些 BDE 应用程序迁移到 AnyDAC 和 Firebird,TADTable
工作得非常好。IMHO, UniDAC
TUniTable
is just a wrapper ofTUniQuery
.TUniTable
open may lead to fetching all records on SQL Server. Not sure how, but try to change SQL Server cursor type and/or location.If it is not late, then consider to use AnyDAC and TADTable. It uses "Live Data Window" technology, which allows to open and browse through the large tables without significant delays, eg
Open
andLast
calls will be always fast. We migrated few BDE applications to AnyDAC and Firebird,TADTable
works really great.