以下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)。如果我们将所有记录提取到网格中,则将具有以下性能:
在我们的Delphi7程序中,我们已将 TADQuery 连接到它自己的 TADTransaction 。 TADTransaction的ReadOnly属性已更改为True
,这两个组件均使用默认设置。现在我们想知道为什么外部应用程序比我们的Delphi7程序快大约10倍? 是否可以修改某些属性以加快Delphi 7程序的速度?
感谢您的帮助...