使用TUniTable的性能问题

问题描述:

我正在转换悖论编写的数据库应用程序Delphi使用SQL Server 2008 R2。我们使用来自Devart的UNIDAC组件来访问数据库/表。但是,我发现性能相当缓慢。例如,在Paradox版本中,当打开一个包含100,000条记录的表(使用TTable)时,它或多或少是即时的,但SQL Server(使用TUniTable)大约需要2秒。现在我知道这似乎不是很多,但有10个TUniTable数据集在表单创建时打开,所有这些数据集都包含大约相同数量的记录,因此目前打开它们的时间不到20秒。有没有人有任何性能提示?使用TUniTable的性能问题

我使用的是2007年德尔福

+5

这与UniDAC无关。您应该*永远不*使用对SQL数据库的表类型访问;这意味着(对于几乎所有的服务器),100%的数据传输到客户端。您应该使用查询,并使用特定的列列表和WHERE子句限制正在检索的数据,从而减少行数。 – 2012-01-31 01:31:01

恕我直言,UniDAC TUniTable只是一个TUniQuery包装。 TUniTable打开可能会导致获取SQL Server上的所有记录。不知道如何,但尝试更改SQL Server光标类型和/或位置。

如果不晚,则考虑使用AnyDACTADTable。它使用“实时数据窗口”技术,该技术允许打开并浏览大型表格而不会出现明显的延迟,例如OpenLast呼叫总是很快。我们将几个BDE应用程序迁移到AnyDAC和Firebird,TADTable工作真的很棒。

+0

Ken White的警告对于AnyDAC仍然有效,查询(以SQL为中心)的性能将优于表(主要推荐用于桌面数据库)。 – menjaraz 2012-01-31 08:35:36