本文主要介绍了mysql优化总结-查询总条数的相关内容,文中进行简单的测试对比,具有一定参考价值,需要的朋友可以了解下,希望可以帮助到大家。
1、COUNT(*)和COUNT(COL)
COUNT(*)通常是对主键进行索引扫描,而COUNT(COL)就不一定了,另外前者是统计表中的所有符合的纪录总数,而后者是计算表中所有符合的COL的纪录数。还有有区别的。
优化总结,对于MyISAM表来说:
1.任何情况下SELECT COUNT(*) FROM tablename是最优选择;
2.尽量减少SELECT COUNT(*) FROMtablename WHERE COL = ‘value’ 这种查询;
3.杜绝SELECT COUNT(COL) FROM tablename WHERE COL2 =’value’ 的出现。
2、COUNT(*)还是COUNT(id)
根据我的理解,应该是使用COUNT(id)更加快速,因为如果我的id是一个自增的主键,那么计算它的数量显然比计算所有字段的数量需要消耗的资源少一些。但是我不止在一篇的类似指导mysql查询加速的文章中看到,都建议我们使用SELECT COUNT(*)而非直接COUNT主键,这是为什么呢?
貌似是因为用MyISAM引擎的表存储了总条数,如果没有WHERE或者WHERE恒为真(比如WHERE 1),那么COUNT(*)可以直接返回总条数。
BibiGPT-哔哔终结者
B站视频总结器-一键总结 音视频内容
28 查看详情
另外,很显然COUNT(*)不是”计算所有的字段”,显然MySQL会把*解析成“一条数据”的意思。
测试数据,简单对比一下,未做更深入的测试:
#0.817-一百万条的查询时间select count(*) from student ;#0.789-一百万条的查询时间select count(id) from student;#1.011-一百万条的查询时间select count(name) from student;#1.162-一百万条的查询时间SELECT COUNT(*) FROM student WHERE namelike '%xiaoli%';#默认用主键索引查询,但是加上like条件后索引失效
总的来说,使用COUNT(id)还是更快一些,这里作的简单对比,供大家参考。
相关推荐:
关于mysql优化之IN换INNER JOIN的实例分享
一些常用的mysql优化方法总结
常用mysql优化sql语句查询方法汇总
以上就是MySQL优化总结-查询总条数的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/387722.html
微信扫一扫
支付宝扫一扫