Home  >  Article  >  Database  >  关于mysql中innodb的count优化问题分享

关于mysql中innodb的count优化问题分享

WBOY
WBOYOriginal
2016-06-07 17:55:32855browse

关于mysql中innodb的count优化问题,有需要的朋友可以参考下

一般采用二级索引去count:
比如:id 是pk aid是secondary index

采用
代码如下:
select count(*) from table where id >=0;

select count(*) from table;

效果是一样的,都是默认使用pk索引,且都要全表扫描,虽然第一种性能可能高一些,但是没有明显区别。

但是如果用secondary index
代码如下:
select count(*) from table where aid>=0;

则会快很多。

为什么用 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则主要在扫描索引,同时要返回结果记录时的作用较大。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn