MySQL的COUNT()函数是估计吗?

Ric*_*ões 3 mysql

我连续三次在MyISAM表上执行以下查询:

mysql> SELECT COUNT(*) FROM tickets WHERE created_time BETWEEN UNIX_TIMESTAMP() - 86400 * 20 AND UNIX_TIMESTAMP() - 86400 * 19;
Run Code Online (Sandbox Code Playgroud)

ticket表仅接收insert_,其中created_time列设置为UNIX_TIMESTAMP(),永远不会删除行,并且永远不会更新行的created_time.尽管如此,我得到的结果是154324,154326和154325(按此顺序).这导致我相信COUNT()函数不会返回确切的数字,但是我对MySQL文档和网络其余部分的简要搜索没有提到这一点.有谁知道COUNT()的作用,究竟是什么?

Fil*_*ara 5

你得到的结果有什么问题?

在运行查询时,时间窗口正在移动 - 前两个新结果进入窗口,然后一个旧结果出来(太旧).

对于不同的方案,COUNT的实现方式不同.如果不使用WHERE限制查询并且在单个表上执行查询,则使用一些存储的内部计数器来生成结果.如果限制查询,则首先使用表数据或索引过滤结果,然后计算结果行.

  • 我相信这是真正的编程智慧之路的第一步...... =) (5认同)