iT邦幫忙

DAY 7
4

MS SQL Server新特性探險:探險代碼 Denali系列 第 7

[Denali 新特性探險7]Paging Implementation

這篇介紹 Denali 的分頁改善。
假如你的分頁操作是使用 Denali 的Offset and Fetch First/Next,
那麼你將感受到分頁操作就是這麼簡單且更有效率。

OFFSET:依指定列數開始查詢資料。
FETCH FIRST / NEXT :以 offset 起始列數往下取得總筆數。

操作示範

假設今天我希望每頁顯示15筆資料,
SQL2005/2008 我想大家都會透過row_number function 來達到分頁效果,
這裡我會做個效能比較測試,
後面你能透過效能結果比較表來得知兩者效能上的差異。

Denali 分頁操作

declare @currentpage int,@pagecount int
set @currentpage=0 --現在頁數(0=第一頁)
set @pagecount=15--每頁顯示筆數
select * from Production.TransactionHistory t1
order by t1.TransactionID
Offset @currentpage*@pagecount rows --第一筆 rownum
fetch next @pagecount rows only --從第一筆 rownum 往下取得總筆數


I/O and Time統計資訊。


執行計畫總成本。

SQL2005/2008 分頁操作

declare @currentpage int,@pagecount int
set @currentpage=0 --現在頁數(0=第一頁)
set @pagecount=15--每頁顯示筆數
;with mycte as 
(
select row_number() over (order by TransactionID) 'rownum',*
from Production.TransactionHistory 
)
select * from mycte
where rownum >(@currentpage*@pagecount) and rownum<=(@currentpage*@pagecount)+@pagecount


I/O and Time統計資訊。


執行計畫總成本(和Denali 執行計畫比較可說複雜許多)。

一起比較兩者執行計畫成本

Denali執行計畫較優於SQL2005/2008。

效能比較結果表

MS SQL Server新特性探險:探險代碼 Denali 全系列文章


上一篇
[Denali 新特性探險6]Analytic Functions
下一篇
[Denali 新特性探險8]Rows and Range
系列文
MS SQL Server新特性探險:探險代碼 Denali30

尚未有邦友留言

立即登入留言