------------------------------------------------------------------------------------------------------------------
1、我这里有10个字段。
count(1)和count(*)都是返回一样的结果!
2、到底谁的速度快一点。
问了很多人了,也网上搜索过一早上,还是没有确切答案,都是各执一词!各有各的理!
10W数据,测试是count(*)快一些,但是我以前不知道那里看过资料,说的是count(1)快!怎么回事情!?大家给个明确说法!
------------------------------------------------------------------------------------------------------------------
就是因为count,sum这些聚合函数加上统计group by,遇到null自动略过,所以你用count(1),count(*)结果是很可能不一样,sum的话
我有个一个表A,作为测试
select * from a
/*
a_nam a_add
----------- ----------
1 aa
1 bb
NULL kk
2 kk
NULL uu
4 dd
6 yy
6 yy
(8 row(s) affected)
*/
select a_add,count(a_nam) from a
group by a_add
/*
a_add
---------- -----------
aa 1
bb 1
dd 1
kk 1
uu 0
yy 2
(6 row(s) affected)
Warning: Null value is eliminated by an aggregate or other SET operation.
*/
select a_add,count(1) from a
group by a_add
/*
a_add
---------- -----------
aa 1
bb 1
dd 1
kk 2 --有2笔,null认为存在
uu 1 --为null,但是也认为有一笔
yy 2
(6 row(s) affected)
*/
下面2个看看,很有意思,一个是空,一个是没有资料
select sum(a_nam) from a
where a_add = 'xx'
group by a_add
/*
-----------
(0 row(s) affected)
*/
select sum(a_nam) from a
where a_add = 'xx'
/*
-----------
NULL
(1 row(s) affected)
*/
上面2个是因为没有用group by造成的差异,有些程序认为null是有资料,那么就要注意啦
所以用聚合函数,一般要加上group by,有出现null的资料,请加上isnull()转换
FYI