先来一段代码:
WITH OrderedOrders AS
(SELECT *,
ROW_NUMBER() OVER (order by [id])as RowNumber --id是用来排序的列
FROM table_info ) --table_info是表名
SELECT *
FROM OrderedOrders
WHERE RowNumber between 50 and 60;
在windows server 2003, sql server 2005 CTP,P4 2.66GHZ,1GB 内存下测试,执行时间0秒 [lol] ,表中数据量230万
接下来大批量的数据查询性能瓶颈就在count了,不知道sql server 2005在这方面有没有什么改进.
附另一种方法:
SELECT *
FROM (select *,ROW_NUMBER() Over(order by id) as rowNum from table_info ) as myTable
where rowNum between 50 and 60;
参考:
SQL Server 2005中的T-SQL增强
http://info.hustonline.net/document/doc.aspx?ID=1744
本文通过一段SQL Server 2005的T-SQL代码示例,展示了如何使用ROW_NUMBER()函数进行数据排序,并在Windows Server 2003环境下进行了性能测试。结果显示,在包含230万条记录的表中,特定范围的数据查询仅需0秒即可完成。

被折叠的 条评论
为什么被折叠?



