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