首页 > 数据库Mssql > sql 2000中count(*),count(1),count(主键),count(非主键)等执行效率时间测试

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

本文链接: http://www.ajaxcn.net/archives/505

分类: 数据库Mssql 标签: ,
一键分享到:新浪微博分享  分享到网易微博    转贴到开心网  推荐到豆瓣  分享到QQ空间    RSS订阅
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.