时间:2021-05-23
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(*)可以直接返回总条数。
另外,很显然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优化总结-查询总条数的全部内容,希望对大家有所帮助。感兴趣的朋友可以参阅:MySQL优化之使用连接(join)代替子查询、MYSQL子查询和嵌套查询优化实例解析、mysql in语句子查询效率慢的优化技巧示例等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
上一篇文章中我们介绍了MySQL优化总结-查询总条数。这篇文章我们来介绍下查询语句中的另一个知识:用户变量的使用代码解析。先上代码吧SELECT`notice`
参考表MySQL笔记之函数查询的使用count()用来统计记录的条数复制代码代码如下:mysql>selectcount(*)fromscore;mysql>s
优化器(TheOptimizer)这篇描述MySQL查询优化器的工作原理。MySQL查询优化器主要为执行的查询决断最有效的路线(routine,走向)。一。源代
正儿八经mysql优化!mysql数据量少,优化没必要,数据量大,优化少不了,不优化一个查询10秒,优化得当,同样查询10毫秒。这是多么痛的领悟!mysql优化
MySQL性能优化MySQL性能优化就是通过合理安排资源,调整系统参数使MySQL运行更快、更节省资源。MySQL性能优化包括查询速度优化、更新速度优化、MyS