count(*)、count(1)和count(col)的区别

        今天与开发交流,有人说禁止用count(*),要用count(1),这样性能好。

        我首先用set autotrace 查一个表,从执行计划和执行统计信息来看没有看出任何区别,然后用10053事件跟踪,发现count(1)转换为count(*),所以可以断定count(*) 和count(1)没有任何区别。

         count(*)统计的规则是:如果有非空索引比如主键,它会选择代价最小的一个索引来计数。

    

         count(col)统计col列不为空的记录,这个就不做实验了。

你可能感兴趣的:(count(*)、count(1)和count(col)的区别)