之前我們也許都用過了linq的skip and take方式進行分頁查詢,但是很少自己寫sql的分頁查詢,由于大多數時候,我們都是在調用他人的方法。
最近看到1個文檔,感覺方法里面實現的分頁查詢進入數據庫調用的時候,實際最底層調用的還是SQL的分頁查詢,例如,我們用linq寫個分頁查詢,轉成sql表達式后發現:
實際調用的時候,才發現SQL底層是這樣進行分頁的。
下面,本文主要是介紹兩種SQL的分頁查詢。
top是選擇前多少行,在利用top分頁的時候,比如我們要取第3頁,每頁5條數據,這時候候,我們可以先去掉前2頁的數據,然后用top選擇剩下數據的前5條。
這類方式是從SQL SERVER 2008才開始支持的,是否是感覺挺高仿Oracle的~
使用Row_Number主要是根據行號進行分頁,最后1個between 判斷行號。
小結:
SQL分頁方式有很多種,在選擇如何分頁的時候,要斟酌用戶比較經常使用的是前面的頁還是后面的頁,如果是比較靠前的頁,top方式還是不錯的。如果是靠后的,可以選擇rownumber;另外,有時候還是要綜合斟酌。綜合斟酌的時候,rownumber方式是比較常見的,也是效力比較好的。