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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值