Mysql中如何优化select count

网友投稿 373 2023-11-30

Mysql中如何优化select count

这篇文章主要介绍了Mysql中如何优化select count,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Mysql中如何优化select count

1.任何情况下SELECT COUNT(*) FROM tablename是最优选择;

2.尽量减少SELECT COUNT(*) FROM tablename WHERE COL = ‘value’ 这种查询;

3.杜绝SELECT COUNT(COL) FROM tablename的出现。

COUNT(*)与COUNT(COL)

网上搜索了下,发现各种说法都有:

比如认为COUNT(COL)比COUNT(*)快的;

认为COUNT(*)比COUNT(COL)快的;

还有朋友很搞笑的说到这个其实是看人品的。

在不加WHERE限制条件的情况下,COUNT(*)与COUNT(COL)基本可以认为是等价的;

但是在有WHERE限制条件的情况下,COUNT(*)会比COUNT(COL)快非常多;

具体的数据参考如下:

> SELECT COUNT(*) FROM cdb_posts where fid = 604;

+————+

| COUNT(fid) |

+————+

| 79000 |

+————+

1 row in set (0.03 sec)

mysql> SELECT COUNT(tid) FROM cdb_posts where fid = 604;

+————+

| COUNT(tid) |

+————+

| 79000 |

+————+

1 row in set (0.33 sec)

mysql> SELECT COUNT(pid) FROM cdb_posts where fid = 604;

+————+

| COUNT(pid) |

+————+

| 79000 |

+————+

1 row in set (0.33 sec)

COUNT(*)通常是对主键进行索引扫描,而COUNT(COL)就不一定了,另外前者是统计表中的所有符合的纪录总数,而后者是计算表中所有符合的COL的纪录数。还有有区别的。

COUNT时的WHERE

简单说下,就是COUNT的时候,如果没有WHERE限制的话,MySQL直接返回保存有总的行数

而在有WHERE限制的情况下,总是需要对MySQL进行全表遍历。

优化总结:

1.任何情况下SELECT COUNT(*) FROM tablename是最优选择;

2.尽量减少SELECT COUNT(*) FROM tablename WHERE COL = ‘value’ 这种查询;

3.杜绝SELECT COUNT(COL) FROM tablename的出现。

感谢你能够认真阅读完这篇文章,希望小编分享的“Mysql中如何优化select count”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Mysql的时间函数有哪些
下一篇:如何通过命令备份和还原MySQLCluster
相关文章

 发表评论

暂时没有评论,来抢沙发吧~