您的位置:首页 > 数据库

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

2009-09-20 17:41 316 查看
--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 毫秒。
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: