先來一段代碼:
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;