SQL2005生成系列号(行号)两种方式效率比较

--1.用CTE递归测试

DBCC DROPCLEANBUFFERS

DBCC FREEPROCCACHE

SET STATISTICS TIME ON

;WITH t AS

(

    SELECT 1 AS num

    UNION ALL

    SELECT num+1

    FROM t

    WHERE num<100000

)

SELECT * FROM t

OPTION(MAXRECURSION 0)

SET STATISTICS TIME OFF

/*

DBCC 执行完毕。如果DBCC 输出了错误信息,请与系统管理员联系。

DBCC 执行完毕。如果DBCC 输出了错误信息,请与系统管理员联系。

 

(100000 行受影响)

 

 SQL Server 执行时间:

   CPU 时间= 2297 毫秒,占用时间= 3536 毫秒。

*/

 

--2.用通过系统表生成行号测试

DBCC DROPCLEANBUFFERS

DBCC FREEPROCCACHE

SET STATISTICS TIME ON

SELECT TOP 100000 num=ROW_NUMBER()OVER(ORDER BY GETDATE())

FROM syscolumns a,syscolumns b

SET STATISTICS TIME OFF

/*

DBCC 执行完毕。如果DBCC 输出了错误信息,请与系统管理员联系。

DBCC 执行完毕。如果DBCC 输出了错误信息,请与系统管理员联系。

 

(100000 行受影响)

 

 SQL Server 执行时间:

   CPU 时间= 0 毫秒,占用时间= 872 毫秒。

*/

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/htl258/archive/2009/09/20/4573244.aspx

你可能感兴趣的:(sql,sql,server,测试,statistics)