天天看點

知方可補不足~sqlserver中使用ROW_NUMBER進行的快速分頁

回到目錄

這個在SQL2005之後最見的一種分頁方式,也是Linq預設生成的執行分頁的方法(skip,take),當然在性能上小數量沒有問題,在資料達到百萬時會很慢,這是我們要清楚的,有時我們在LINQ環境下也需要分頁寫SQL,這時如何去分布就成為了一個很不好處

理的問題,是以大叔還是把準備的分頁代碼貢獻一下

DECLARE @pageSize INT ;
DECLARE @pageIndex INT ;
SET @pageSize = 5
SET @pageIndex =2 ;
 --第二頁,每頁顯示5條資料                      
SELECT  *
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY CreateDate ASC ) AS 'rowNumber' ,
                    *
          FROM      dbo.Task_Info
        ) AS temp
WHERE   rowNumber BETWEEN ( ( ( @pageIndex - 1 ) * @pageSize ) + 1 )
                  AND     ( @pageIndex * @pageSize )            

在LINQ環境下使用SQL代碼如下

Db.Database.SqlQuery<FighterTaskTotalDTO>("你的代碼")      

結果

作者:倉儲大叔,張占嶺,

榮譽:微軟MVP

QQ:853066980

支付寶掃一掃,為大叔打賞!

知方可補不足~sqlserver中使用ROW_NUMBER進行的快速分頁