Delphi Firedac TFDtable 开放问题

Posted

技术标签:

【中文标题】Delphi Firedac TFDtable 开放问题【英文标题】:Delphi Firedac TFDtable open issue 【发布时间】:2016-09-29 05:21:34 【问题描述】:

我正在从事 Delphi XE6 项目。 我正在使用 Firedac 进行 PostgreSQL 连接。

本项目中有两个数据模块,这些数据模块上有近20个TFDtables组件。

在创建数据模块事件时,我正在为所有表执行“TFDtable.open”。 这些表包含大量数据,例如 700000 到 800000 个条目。

问题在于加载数据。加载至少需要 20 秒 有没有其他办法让它更快?

【问题讨论】:

您加载这些大量的行只是为了让用户可以在您的 gui 中浏览它们吗?无论如何,我怀疑你会更快地打开这些表。更好的是对您加载的记录更具选择性。这是应用程序和数据库设计的问题。 FetchOptions.Mode 是如何在这些 FDTables 中设置的? 尽管 FireDAC 可以在这里为您提供帮助,但我完全同意 @MartynA 关于获取这么多行的看法。获取如此多的数据只是浪费资源。 【参考方案1】:

您似乎正在实现所谓的Live Data Window Mode,并且您正在寻找LiveWindowFastFirst 属性。它被描述为:

LiveWindowFastFirst

如果设置为 True,则 FireDAC 构建一个查询以返回第一个 尽快出结果。如果设置为 False(默认 值),然后 FireDAC 最小化返回所有表行的时间。

所以尝试启用它:

...
FDTable1.FetchOptions.LiveWindowFastFirst := True;
FDTable1.Open;

【讨论】:

以上是关于Delphi Firedac TFDtable 开放问题的主要内容,如果未能解决你的问题,请参考以下文章

Delphi - FireDAC的连接配置

Delphi东京版FireDAC连接MSSQL2000提示对象名 'SYS.DATABASES' 无效

Delphi XE FireDac 连接池

使用 FireDac 在 Delphi 中动态创建和调用存储过程的正确方法是啥?

Delphi:FireDac 连接阻止应用程序

Delphi 和 Firedac:查询活动与查询打开