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

2022-09-17 10:27:14 字數 2932 閱讀 2155

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

1、sql server、access資料庫

這都微軟的資料庫,都是一家人,基本的操作都是差不多,常採用如下分頁語句:

pagesize:每頁顯示的記錄數

currentpage:當前頁號

資料表的名字是:components

索引主鍵字是:id

sql**

select

top pagesize * from components where id not

in (select

top (pagesize*(currentpage-1)) id from components order

by id)   

order

by id  

select top pagesize * from components where id not in

(select top (pagesize*(currentpage-1)) id from components order by id)

order by id

如下列:

sql**

select

top 10 * from components where id not

in (select

top 10*10 id from components order

by id)   

order

by id  

select top 10 * from components where id not in

(select top 10*10 id from components order by id)

order by id

從101條記錄開始選擇,只選擇前面的10條記錄

2、oracle資料庫

因為oracle資料庫沒有top關鍵字,所以這裡就不能夠像微軟的資料據那樣操作,這裡有兩種方法:

1)、一種是利用相反的。 

pagesize:每頁顯示的記錄數

currentpage:當前頁號

資料表的名字是:components

索引主鍵字是:id

sql**

select * from components where id not

in(select id from components where  rownum<=(pagesize*(currentpage-1))) and rownum<=pagesize order

by id;  

select * from components where id not in(select id from components where  rownum<=(pagesize*(currentpage-1))) and rownum<=pagesize order by id;

如下例:

sql**

select * from components where id not

in(select id from components where rownum<=100) and rownum<=10 order

by id;  

select * from components where id not in(select id from components where rownum<=100) and rownum<=10 order by id;

從101到記錄開始選擇,選擇前面10條。

2)、使用minus,即中文的意思就是減去,呵呵,這語句非常的有意思,也非常好記

sql**

select * from components where rownum<=(pagesize*(currentpage-1)) minus select * from components where rownum<=(pagesize*(currentpage-2));  

select * from components where rownum<=(pagesize*(currentpage-1)) minus select * from components where rownum<=(pagesize*(currentpage-2));

如例:sql**

select * from components where rownum<=10 minus select * from components where rownum<=5;.  

select * from components where rownum<=10 minus select * from components where rownum<=5;.

3)、一種是利用oracle的rownum,這個是oracle查詢自動返回的序號,一般不顯示,但是可以通過select rownum from [表名],可以看到,是從1到當前的記錄總數。 

sql**

select * from (select rownum tid,components.* from components where rownum<=100) where tid<=10;  

select * from (select rownum tid,components.* from components where rownum<=100) where tid<=10;

oracle畢竟還是大家閨秀,微軟的小家碧玉還是差一點,呵呵,自己選擇著用吧。

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

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

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

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

三種資料庫sql分頁查詢

關於sql分頁 今天用到分頁了順便就總結了一下 mysql 資料庫 mysql 中有分頁的關鍵字limit,它可以實現分頁很簡單 select from sys user order by userid limit startno,total startno 是查詢開始的行數,total 是要查詢出...