MySQL下INNODB引擎的SELECT COUNT(*)性能优化及思考

原文链接:  最近研究MYSQL时突然发现count(*) 的问题, 网络上查询时发现该文章.

作者:飘易
来源:飘易
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。

 

执行效率:  MYISAM > InnoDB ( secondary key(单独存放)  >  primary key(与 data 保存) )  

InnoDB引擎并不适合使用select count(*)查询总行数

MYISAM引擎存储记录总行数,select count(*)时直接读取

 

  MYSQL bug 分析:  关于 secondary key(单独存放)  >  primary key(与 data 保存) 

    :  select count(*) from test" in the example now uses the secondary key.

在MYSQL bug处理中存在该问题, 由于使用primary key 的查询效率低于 secondary key ,

所以 Innodb引擎默认优化器将原来的 primary key 扫描, 后期修改为 secondary key 扫描.

  MYSQL 默认优化器选择:   possible_key ,  index  , name 

    explain select count(*)  from table ;

    如只有primary key  则选择 使用pk

    如有primary key 和 secondary key ,则使用 secondary key . 

 

转载于:https://www.cnblogs.com/LinuxSuDa/p/8341017.html

你可能感兴趣的:(数据库)