cds.RecordCount 有问题吗?
我通常使用它来确定查询中是否有任何记录。
但是在与一所大学交谈时,他告诉我们这样做会造成性能损失!
我做了一些测试,没有出现任何重大问题。
那么 RecordCount 是否存在性能损失或任何其他问题?!
如果是这样,检查查询中是否有一些记录的最佳方法是什么?
谢谢
cds.RecordCount 有问题吗?
我通常使用它来确定查询中是否有任何记录。
但是在与一所大学交谈时,他告诉我们这样做会造成性能损失!
我做了一些测试,没有出现任何重大问题。
那么 RecordCount 是否存在性能损失或任何其他问题?!
如果是这样,检查查询中是否有一些记录的最佳方法是什么?
谢谢
如果您使用 TClientDataSet (正如您的“cds”似乎暗示的那样)PacketRecords设置为-1(默认)或FetchOnDemand设置False为没有区别,因为客户端数据集一次接收所有数据并将其加载到内存中。当您移动光标时,其他数据集会根据需要获取数据,使用RecordCount将首先获取所有数据,这种差异会很明显。在这种情况下,最好EOF在打开后使用数据集的属性 - 如果您只想知道结果集是否为空。
最好的解决方案是执行SELECT COUNT(*)查询。
如果您需要本地的所有记录,您应该将FetchOnDemand属性设置为,False或者您可以cds.Last在之前调用cds.RecordCount。
cds.IsEmpty如果目的是检查数据集是否包含记录,还有一种方法......