有你在真好 的个人博客
MySQL中 count(1) 比 count(-)效率更优-
阅读:2046 添加日期:3/30/2021 5:41:46 PM

科多大数据为大家简单的介绍mysql中count(1)与count(*) 性能比较。

通常大家走入一个误区是,count(*) 为全表扫描,所以认为count(*) 的效率是最低的。而实际上,如何写count 并没有什么太大的区别。

sql调优,主要是考虑降低:consistent gets和physical reads的数量。

count(1)与count(*)比较:

如果你的数据表没有主键,那么count(1)比count(*)快

如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快

如果你的表只有一个字段的话那count(*)就是最快的啦

count(*) count(1) 两者比较。主要还是要count(1)所相对应的数据字段。

如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。

因为count(*),自动会优化指定到那一个字段。所以没必要去count(?),用count(*),sql会帮你完成优化的

count详解:

count(*)将返回表格中所有存在的行的总数包括值为null的行,然而count(列名)将返回表格中除去null以外的所有行的总数(有默认值的列也会被计入).

distinct 列名,得到的结果将是除去值为null和重复数据后的结果

总结三条经验

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

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

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

@来自科多大数据,转载注明出处

现在还不清楚自己是否适合学习大数据的小伙伴们可以点击以下链接或者扫描二维码测试一下哦~

http://www.101test.com/cand/index?paperId=21VNJU