Select Count (*)和Select Count(1)以及Select Count(column)的区别
炽翼铁冰
posted @ 2010年1月14日 17:35
in Database(转载)
, 5277 阅读
一般情况下,两着返回结果是一样的
假如表沒有主键(Primary key), 那么count(1)比count(*)快
如果有主键的話,那主键作为count的条件时候count(主键)最快
如果你的表只有一个字段的话那count(*)就是最快的
count(*) 跟 count(1) 的结果一样,都包括对NULL的统计
count(column) 是不包括NULL的统计
假如表沒有主键(Primary key), 那么count(1)比count(*)快
如果有主键的話,那主键作为count的条件时候count(主键)最快
如果你的表只有一个字段的话那count(*)就是最快的
count(*) 跟 count(1) 的结果一样,都包括对NULL的统计
count(column) 是不包括NULL的统计
其原理是对数字1进行统计,会将表中所有记录转化为1,然后再计数统计
相当于先select 1 from table 然后count
如果null参与聚集运算,则除count(*)之外其它聚集函数都忽略null."
这句话的意思说如果字段是有空值的话,你用SUM去计算,得到的结果有可能不准确.
看一个实例:
表A
ID EE
1 e
2 null
select count(*) from A --结果是2
select count(EE) from A ---结果是1
相当于先select 1 from table 然后count
如果null参与聚集运算,则除count(*)之外其它聚集函数都忽略null."
这句话的意思说如果字段是有空值的话,你用SUM去计算,得到的结果有可能不准确.
看一个实例:
表A
ID EE
1 e
2 null
select count(*) from A --结果是2
select count(EE) from A ---结果是1