3

cds.RecordCount 有问题吗?

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

但是在与一所大学交谈时,他告诉我们这样做会造成性能损失!

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

那么 RecordCount 是否存在性能损失或任何其他问题?!

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

谢谢

4

2 回答 2

4

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

于 2011-04-07T11:25:49.493 回答
3

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

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

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

于 2011-04-07T12:02:13.157 回答