AnyDAC组件执行SQL查询的速度比FIBPlus组件慢

时间:2019-04-09 10:21:59

标签: performance delphi firedac anydac fibplus

以下SQL命令返回大约4.500条记录,并包含整数,字符串和blob(文本)值。所有索引设置正确。此外,我们知道 in 子句不是最好的子句,但现在不应该困扰我们。 SQL命令在firebird 3.0服务器上执行:

Select
distinct O.Nr, O.Betreff, O.Text, O.Absenderadresse, O.Gelesen, O.Datum, O.Ordner, O.TextNotiz, M.ID, R.PosNr as RPosNr, R.AddressType, R.Address, R.Name, A.Nr as AttachmentNr, M.Bezeichnung as Mailordner, 0 as Archived

from Table1 O
  left join Table2 R on (R.Nr = O.IDNr)
  join Table3 M on (M.Nr = O.Ordner)
  and (M.PersonalNr=O.PersonalNr)
  left join Table4 A on (A.Nr = O.IDNr)

where (O.PersonalNr = 12)
and O.Ordner in (608,7440,7441,7444,6144,7091,5467,617,2751,710,6580,2812,609,7054,7194,7479,614,620,7030,615,3434,4883,619,6465,7613)

我们在外部应用程序(我们知道该应用程序使用 FIBPlus 组件)和非常基本的示例 Delphi7应用程序中执行了SQL命令(使用原始的 AnyDAC 数据库组件版本8.0.5)。如果我们将所有记录提取到网格中,则将具有以下性能:

  • FIBPlus的外部应用程序〜200 – 400毫秒
  • 带有AnyDAC的Delphi7〜3.500 – 4.500毫秒

在我们的Delphi7程序中,我们已将 TADQuery 连接到它自己的 TADTransaction 。 TADTransaction的ReadOnly属性已更改为True

,这两个组件均使用默认设置。

现在我们想知道为什么外部应用程序比我们的Delphi7程序快大约10倍? 是否可以修改某些属性以加快Delphi 7程序的速度?

感谢您的帮助...

0 个答案:

没有答案