innodb表如何更快得到count(*)结果

首先如果不加任何条件,那么MYSQL优化器优先采用 primary key 来进行扫描。

select count(*) from tab where key > 0

而key采用 primary key 以及 secondary index 会引起的区别。用 secondary index 扫描会比 primary key 扫描来的要快,为什么?我们就需要了解innodb的 clustered index 和secondary index 之间的区别了。
innodb 的 clustered index 是把 primary key 以及 row data 保存在一起的,而 secondary index 则是单独存放,然后有个指针指向 primary key。因此,需要进行 count(*) 统计表记录总数时,利用 secondary index 扫描起来,显然更快。而primary key则主要在扫描索引,同时要返回结果记录时的作用较大。

你可能感兴趣的:(InnoDB,count(*))