由于某些原因,我需要在 Delphi 项目中使用FDTable来获取大量的记录(Interbase数据库),不幸的是,打开FDTable需要太多的时间(最多2min,有时甚至更多),更糟糕的是当ApplyUpdate时,我尝试了一切可能通过改变获取选项:Recsmax、Rowsize、Mode等,如某些页面所述,例如:https://docwiki.embarcadero.com/RADStudio/Sydney/en/Fetching_Rows_(FireDAC)
将RecsMax选项设置为一个小值(50或100)对性能有很大帮助,但即使使用FetchAll,它也不会在应用Filter的情况下获取1条记录。正如我之前提到的,我需要使用FDtable来执行此操作,FDQuery不是一个选项,因为我们都知道处理查询更好。
是否有建议可以顺利打开并提取数据(100k+记录)?是否可以使用Filter + RecsMax提取记录?
2条答案
按热度按时间uurv41yg1#
查询表必须有主键。可以按如下方式配置TFDTable
这是实现最佳性能的配置
pobjuy322#
FDTable组件主要用于BDE兼容性。
带有“select * from Table1”的FDQuery与使用FDTable完全相同,但是您可以在服务器端过滤结果集。
100k以上的记录需要传输大量的数据,blob增加了额外的开销,因为它们通常是分开获取的。我建议你重新考虑功能设计。