码迷,mamicode.com
首页 > 其他好文 > 详细

select count(1) 和 select count(*)的区别

时间:2017-01-18 13:31:37      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:个人   为什么   bsp   位置   查询   rom   数据   sel   占用   

统计一个表T有多少行数据,通常写法是:

查询A:select count(*) from T

但也可以采用下面语句来查:

查询B:select count(1) from T

结果通常是一样的。那么二者区别在哪里呢?

如果T表是个很大的表,那么查询速度将有显著的差异。实践中T表有4200万行,采用查询B,耗时3分多钟,而采用查询A,则耗时不到1秒。可见在大表的查询上必须非常谨慎。

 

那么为什么查询A比查询B快呢?

个人分析认为,查询A不需要过滤,直接用末行位置-首行位置/每行占用位置。而查询B,因为每一行要与常数1进行比对,不是NULL才统计,所以就慢了。

select count(1) 和 select count(*)的区别

标签:个人   为什么   bsp   位置   查询   rom   数据   sel   占用   

原文地址:http://www.cnblogs.com/jackkwok/p/6296246.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!