select count mysql_mysql 查询优化 ~ select count 知多少

一 简介:今天咱们来聊聊mysql的查询总数

二 具体介绍

1 从引擎层面说

myisam  myisam的扫描总行数是非常快的,这是因为myisam会将表的总行数存储起来,定期维护,但是注意,一旦加入where条件,这个优势就会消失

innodb   innodb 的扫描总行数随着数据量的增大越来越慢,innodb自身因为MVCC机制,不同事务读取的总行数可能不同,所以维护一个单独的总行数没有什么意义

2 从查询方式说起

1 select  count(*)   2 select count(primary)  3 select count(非paimary) 4 select count(1)

分析思路

1 要考虑 值是否是NULL 2 要考虑从B+树读取记录 3 统计字段的大小

执行效率  1=4 > 2 > 3

三 总结

1尽量选择 select count(*) ,因为count(*)做过优化,并不取值和进行NULL判断,更不必考虑统计字段的大小

2 对于select count(*)的explain,如果辅助索引很小,会按照辅助索引走,如果大,就按照主键来走了,基于成本

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值