三種資料庫sql分頁查詢

2021-06-19 12:58:58 字數 1211 閱讀 9068

關於sql分頁

今天用到分頁了順便就總結了一下

mysql 資料庫:

mysql 中有分頁的關鍵字limit,它可以實現分頁很簡單;

select * from sys_user order by userid limit startno,total;

startno 是查詢開始的行數,total 是要查詢出多少條;

sql server2005 資料庫:

sql server 實現分頁有兩種方式可以實現;

一:利用 top 和 row_number() over(order by...)函式實現

top 子句用於規定要返回的記錄的數目  ,row_number()相當於偽列!

select top total * from 

(select *,row_number() over(order by pid) rownum from person_base )x where x.rownum>startno

startno 是查詢開始的行數,total 是要查詢出多少條;

需要注意的是 row_number()函式後邊必須有乙個排序over(order by pid)

二:利用top 和 not in 實現

select top total * from person_base where pid not in

( select top startno pid from person_base order by pid)

order by pid

根據別人測試的資料顯示第二種方法比第一種方法效率要高

oracle 資料庫:

oracle 實現分頁需要用到偽列rownum

select * from (select *,rownum rno from person_base where rownum < = (pageno * pagesize)) x where rno > ((pageno - 1) * pagesize);

pageno 是第幾頁  pagesize 是每頁顯示的個數

在oracle中即有 rownum 又有row_number 但是兩者是有區別的

1.rownum的特性(沒有1就不會有2,沒有3……以此類推下去)決定的 rownum只能從1開始

2.使用rownum進行排序的時候是先對結果集加入偽列rownum然後再進行排序,而函式row_number()在包含排序從句後是先排序再計算行號碼。

三種資料庫SQL語句高效分頁

在程式的開發過程中,處理分頁是大家接觸比較頻繁的事件,因為現在軟體基本上都是與資料庫進行掛釣的。但效率又是我們所追求的,如果是像原來那樣把所有滿足條件的記錄全部都選擇出來,再去進行分頁處理,那麼就會多多的浪費掉許多的系統處理時間。為了能夠把效率提高,所以現在我們就只選擇我們需要的資料,減少資料庫的處...

sql分頁查詢語句 三種主流資料庫

oracle 因此,如果不介意在體系中使用hint的話,可以將分頁的查詢語句改寫為 select first rows from select a.rownum rn from select from table name a where rownum 40 where rn 21 sql serv...

三種資料庫利用SQL語句進行高效果分頁

在程式的開發過程中,處理分頁 是大家接觸比較頻繁的事件,因為現在軟體基本上都是與資料庫進行掛釣的。但效率又是我們所追求的,如果是像原來那樣把所有滿足條件的記錄全部都選擇出來,再去進行分頁處理,那麼就會多多的浪費掉許多的系統處理時間。為了能夠把效率提高,所以現在我們就只選擇我們需要的資料,減少資料庫的...