SQL SERVER 2012/ 2014 分頁,用 OFFSET,FETCH NEXT改寫ROW_NUMBER的用法

寫法:

僞裝有個表Shop,其中有一列ShopName,取100000到100050條數據。spa

ROW_NUMBER 的寫法code

SELECT * FROM
(
SELECT ShopName , ROW_NUMBER() OVER(ORDER BY ShopName) as R FROM Shop
) t
WHERE R>100000 AND R<=100050

OFFSET,FETCH 的寫法blog

SELECT ShopName from Shop
ORDER BY ShopName 
OFFSET 100000 ROW
FETCH NEXT 50 ROW ONLY

 

比較:

之因此取十萬條之後的數據,能明顯看出執行時間上的差別。雖然前人們已經給出過不少論證,我這裏仍是貼一下比較結果。class

先是ROW_NUMBER 語法

 

再是 OFFSET FETCH  im

高下立判,後者高效、易懂、語法簡潔有木有!數據

(可是聽聞超過5000w條數據後,結果很差說,這個我還沒試,手上的庫通常到1000w就拆表了,有興趣的能夠試試哦,記得告訴我,咩哈哈哈)img

 

私人小筆記:

OFFSET=偏移,跳過di

FETCH = 取時間

另外OFFSET能夠單獨使用,以下,既跳過前十萬條:

SELECT ShopName from Shop
ORDER BY ShopName 
OFFSET 100000 ROW

 

 

題外話:

從 SQL SERVER 2000 那個你們還在寫TOP的年代,到2005的ROW_NUMBER,再到2012的OFFSET  FETCH,猿類同胞們真是不跟緊潮流就要被無情的拋下啊~一塊兒加了個油吧~

相關文章
相關標籤/搜索