美文网首页
count(*) 怎么工作的

count(*) 怎么工作的

作者: wayyyy | 来源:发表于2022-11-14 17:58 被阅读0次

    在不同的 MySQL 引擎中,count(*) 有不同的实现方式:

    • MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高;
    • InnoDB 引擎执行 count(*) 的时候,需要把数据一行一行地从引擎里面读出来,然后累积计数。

    所以当使用了 InnoDB 引擎,记录数越来越多的时候,计算一个表的总行数也会越来越慢。

    那为什么 InnoDB 不跟 MyISAM 一样,也把数字存起来呢?
    为即使是在同一个时刻的多个查询,由于多版本并发控制(MVCC)的原因,InnoDB 表"应该返回多少行"也是不确定的。

    相关文章

      网友评论

          本文标题:count(*) 怎么工作的

          本文链接:https://www.haomeiwen.com/subject/gozvmltx.html