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 毫秒。
*/