cds.RecordCount有问题吗?
我通常用它来确定我是否在查询中有任何记录。
但是他和一所大学说过,他说这会对你造成性能损失!
我做了一些测试,没有出现任何重大问题。
RecordCount存在性能损失或任何其他问题吗?!
如果是这样,检查查询中是否有某些记录的最佳方法是什么?
由于
答案 0 :(得分:4)
如果您正在使用TClientDataSet(因为您的'cds'似乎暗示),PacketRecords
设置为-1
(默认)或FetchOnDemand
设置为False
,则没有区别,因为客户端数据集一次接收并将所有数据加载到内存中。
当您推进光标时,使用RecordCount
将首先获取所有数据时,按需获取数据的其他数据集会显示出差异。在这种情况下,最好在打开后使用数据集的EOF
属性 - 如果您只想知道结果集是否为空。
答案 1 :(得分:3)
最佳解决方案是执行SELECT COUNT(*)
查询。
如果您需要本地所有记录,则应将FetchOnDemand
属性设置为False
,或者在cds.Last
之前调用cds.RecordCount
。
如果目的是检查数据集是否包含记录,还有一个cds.IsEmpty
方法......