MySQL中 count(1) 比 count(-)效率更优-

SQL语句
409
0
0
2022-11-10
标签   MySQL优化

科多大数据为大家简单的介绍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的出现。

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