SQL查询数据count()时的效率区别

  • Post author:
  • Post category:其他



count(*)、count(1)、count(id)、count(普通索引列)、count(未加索引列)


它们分别有什么区别

  • count(*) :它会获取所有行的数据,不做任何处理,行数加1。
  • count(1):它会获取所有行的数据,每行固定值1,也是行数加1。
  • count(id):id代表主键,它需要从所有行的数据中解析出id字段,其中id肯定都不为NULL,行数加1。
  • count(普通索引列):它需要从所有行的数据中解析出普通索引列,然后判断是否为NULL,如果不是NULL,则行数+1。
  • count(未加索引列):它会全表扫描获取所有数据,解析中未加索引列,然后判断是否为NULL,如果不是NULL,则行数+1。

由此,最后count的性能从高到低是:

count(*) ≈ count(1) > count(id) > count(普通索引列) > count(未加索引列)

所以,其实

count(*)

是最快的,千万别跟

select *

搞混了



版权声明:本文为zxm18751880909原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。