cds.RecordCount问题

时间:2011-04-07 11:10:42

标签: database performance delphi record-count

cds.RecordCount有问题吗?

我通常用它来确定我是否在查询中有任何记录。

但是他和一所大学说过,他说这会对你造成性能损失!

我做了一些测试,没有出现任何重大问题。

RecordCount存在性能损失或任何其他问题吗?!

如果是这样,检查查询中是否有某些记录的最佳方法是什么?

由于

2 个答案:

答案 0 :(得分:4)

如果您正在使用TClientDataSet(因为您的'cds'似乎暗示),PacketRecords设置为-1(默认)或FetchOnDemand设置为False,则没有区别,因为客户端数据集一次接收并将所有数据加载到内存中。 当您推进光标时,使用RecordCount将首先获取所有数据时,按需获取数据的其他数据集会显示出差异。在这种情况下,最好在打开后使用数据集的EOF属性 - 如果您只想知道结果集是否为空。

答案 1 :(得分:3)

最佳解决方案是执行SELECT COUNT(*)查询。

如果您需要本地所有记录,则应将FetchOnDemand属性设置为False,或者在cds.Last之前调用cds.RecordCount

如果目的是检查数据集是否包含记录,还有一个cds.IsEmpty方法......