cds.RecordCount有问题吗?
我通常使用它来确定查询中是否有任何记录。
但在与一所大学交谈时,他告诉我,这会对表现造成惩罚!
我做了一些测试,没有什么大的问题。
那么,RecordCount是否存在性能损失或其他问题?!
如果是这样,那么检查查询中是否有一些记录的最佳方法是什么?
谢谢
发布于 2011-04-07 19:25:49
如果您使用的是TClientDataSet (正如您的'cds‘所暗示的那样),并且PacketRecords设置为-1 (默认值)或FetchOnDemand设置为False,则没有区别,因为客户端数据集一次接收所有数据并将其加载到内存中。对于其他按需获取数据的数据集,当您前进游标时,使用RecordCount将首先获取所有数据,这一差异将是显而易见的。在这种情况下,最好在打开后使用dataset的EOF属性-如果您只想知道结果集是否为空的话。
发布于 2011-04-07 20:02:13
最好的解决方案是执行SELECT COUNT(*)查询。
如果需要本地所有记录,则应将FetchOnDemand属性设置为False,或者可以在cds.RecordCount之前调用cds.Last。
如果目的是检查数据集是否包含记录,还有一个cds.IsEmpty方法……
https://stackoverflow.com/questions/5580112
复制相似问题