gpt4 book ai didi

mysql - ZeosLib DataSets 是否需要执行 FetchAll 方法才能返回真实的总行数?

转载 作者:行者123 更新时间:2023-11-29 14:19:11 26 4
gpt4 key购买 nike

在 Firebird/Interbase 数据库中,我们有 TIBQueryTIBTableTIBDataSet,它们具有 FetchAll 方法计算该数据集有多少行。如果我们不调用该方法,这些数据集仅将用户已通过 TDBGridTDBNavigator 查看的行数注册为“总计”。这个“总数”可以通过调用这些数据集的“RecordCount”方法来检索。

获取真实总行数的另一种(更有效)方法是获取单独的数据集并执行一些 SELECT COUNT(*) FROM TABLE_NAME 并应用我们喜欢的任何过滤器。到目前为止还可以。

但是现在我通过 ZeosLib 使用 MySQL,我想知道是否需要遇到这个麻烦才能在内存上进行第二次查询。

我们知道 ZeosLib 进行查询,并且可能会在内部返回该查询的统计信息,其中包括返回的行数。

ZeosLib 是否将该信息放入 RecordCount 中,还是像 Interbase Components 一样工作?

最佳答案

  1. Zeos 返回已获取的记录数。它不考虑任何应用的过滤器,也不执行 FetchAll返回之前RecordCount .
  2. SELECT COUNT(*) ...并不是“效率更高”,因为它会产生额外的服务器工作负载,有时可能等于执行原始查询的工作负载。
  3. 一般来说,数据访问库可以提供 3 种记录计数计算模式:获取的行数、可见行数(与第一个类似,但在应用过滤器之后)以及 SELECT COUNT(*) 。显式控制 FetchAll 或不 FetchAll 会更好。 AnyDAC 中就是这样做的。 (more)。

关于mysql - ZeosLib DataSets 是否需要执行 FetchAll 方法才能返回真实的总行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12061267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com