标签:个人 为什么 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