Mysql ZeosLib数据集是否需要执行FetchAll方法来返回实际的总行数?
在Firebird/Interbase数据库中,我们有Mysql ZeosLib数据集是否需要执行FetchAll方法来返回实际的总行数?,mysql,delphi,zeos,Mysql,Delphi,Zeos,在Firebird/Interbase数据库中,我们有TIBQuery、TIBTable和TIBDataSet,它们有FetchAll方法来计算数据集有多少行。如果我们不调用该方法,这些数据集只注册为用户已被TDBGrid或TDBNavigator看到的行数的“总计”。可以通过调用这些数据集的“RecordCount”方法来检索此“total” 另一种(更有效的)获取实际总行数的方法是获取一个单独的数据集,并从表_NAME中执行一些选择COUNT(*),并应用我们喜欢的任何过滤器。到目前为止还可
TIBQuery
、TIBTable
和TIBDataSet
,它们有FetchAll
方法来计算数据集有多少行。如果我们不调用该方法,这些数据集只注册为用户已被TDBGrid
或TDBNavigator
看到的行数的“总计”。可以通过调用这些数据集的“RecordCount”方法来检索此“total”
另一种(更有效的)获取实际总行数的方法是获取一个单独的数据集,并从表_NAME中执行一些选择COUNT(*),并应用我们喜欢的任何过滤器。到目前为止还可以
但是现在我通过ZeosLib使用MySQL,我想知道我是否需要在内存上进行第二次查询
我们知道ZeosLib进行查询,它可能会在内部返回该查询的统计信息,其中包括返回的行数
ZeosLib是将该信息放入记录计数中,还是与Interbase组件完全相同
Zeos返回已获取的记录数。它不考虑任何应用的过滤器,并且在返回RecordCount
之前不执行FetchAll
SELECT COUNT(*)…
并不是“更高效”,因为它会创建额外的服务器工作负载,有时可能等于执行原始查询的工作负载
通常,数据访问库可能提供3种记录计数计算模式:获取的行数、可见行数(与第一种模式类似,但在应用过滤器之后)和SELECT count(*)
。FetchAll或not FetchAll最好显式控制。在()中就是这样做的