Innodb引擎中Count(*)

select count(*)是MySQL中用于统计记录行数最常用的方法,count方法可以返回表内精确的行数。

在某些索引下是好事,但是如果表中有主键,count(*)的速度就会很慢,特别在千万记录以上的大表。

所以、如果是用Innodb引擎的时候,使用select count(*)语句时,建议采用二级索引速度会比用主键索引更快。

在InnoDB引擎中,当我们通过二级索引统计数据的时候,无需扫描数据文件(二级索引存储指定字段的索引,实际的指向位置是主键索引。);而通过主键索引统计数据时,由于主键索引与数据文件存放在一起,所以每次都会扫描数据文件,所以主键索引统计没有二级索引效率高。

而myisam是不同的,Myisam内置了一个计数器,所以在使用 select count(*) from table 的时候,直接可以从计数器中取出数据。

所以,在myisam引擎执行count(*)速度非常快,而且执行速度与记录条数无关,而innodb却不是这样。

 

posted @ 2018-10-23 11:00  Final_static_杨  阅读(588)  评论(0编辑  收藏  举报