sql 2000中count(*),count(1),count(主键),count(非主键)等执行效率时间测试
一、基本概念
COUNT(*) 返回组中项目的数量,这些项目包括 NULL 值和副本。
COUNT(ALL expression) 对组中的每一行都计算 expression 并返回非空值的数量。
COUNT(DISTINCT expression) 对组中的每一行都计算 expression 并返回唯一非空值的数量。
二、测试数据
在一个133254条数据数据表中,分别通过执行以下语句采用方法一,结果大概如下
select count(*) from 表名 --133254条, 16ms
select count(1) from 表名--执行结果同count(*) 133254条, 16ms
select count(100) from 表名--执行结果同count(*) 133254条, 16ms
select count(ID) from 表名 --ID为主键,执行结果同count(*) 133254条, 16ms
select count(aa) from 表名--aa非主键字段1,数据有空值 129342条,46ms
select count(bb) from 表名--bb非主键字段2,数据有空值 132203条,46ms
通过以上测试后得出结论我们在用select count 查询返回的时候不要使用非主键,前面4条语句都可以
三、测试方法
方法一,有时不太准
declare @starttime datetime
set @starttime=getdate()---开始时间
select count(*) from 表名----执行语句
select [执行需要的时间(毫秒)]=datediff(ms,@starttime,getdate()) ----在执行语句后当前时间与开始时间之差
方法二
另一个更准的执行测试时间方法
SET STATISTICS PROFILE ON
SET STATISTICS IO ON
SET STATISTICS TIME ON
GO
select count(1) from 表名----执行语句
GO
SET STATISTICS PROFILE OFF
SET STATISTICS IO OFF
SET STATISTICS TIME OFF
原创文章转载请注明出处:云飞扬IT的blog





