PHP程序员站--PHP编程开发平台
 当前位置:主页 >> 数据库 >> MsSQL >> 

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

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

来源:PHP程序员站  作者:PHP程序员站  发布时间:2011-06-09
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 num100000 ) SELECT * FROM t OPTION(MAXRECURSION 0) SET STATISTICS TIME OFF /* DBCC 执行完毕。如果DBCC 输

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

*/


延伸阅读:
SQL2005 中COALESCE函数的用法
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号