And*_* SK 5 mysql innodb count information-schema
我正在尝试从 MySQL InnoDB 表中获取一些统计信息。为了获得更快的结果,我正在使用:
SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = "botonera" AND TABLE_NAME = "log";
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我还需要在这些结果中结合特定的过滤器:
WHERE log.id_cat = 1
Run Code Online (Sandbox Code Playgroud)
如何将 INFORMATION_SCHEMA 结果与相关表内的特定列过滤器相结合?谢谢。
正如 Barmar 指出的,TABLE_ROWS 只是 InnoDB 表的估计值。在支持事务隔离的存储引擎中,行数是多少并不是一个简单的答案。
所以 Barmar 是对的,INFORMATION_SCHEMA 不是获取过滤计数的正确位置。
这也指出了为什么对InnoDB进行查询需要很长时间COUNT(*)。它必须评估表中的每一行,以查看该行是否属于数据库的事务视图。这是使用 ACID 数据库的缺点。
如果您需要以高性能访问计数,则需要跟踪聚合查询结果的计数,并将该值存储在其他位置,例如另一个表或内存缓存。
| 归档时间: |
|
| 查看次数: |
1442 次 |
| 最近记录: |