oracle 分頁
分頁查詢格式(第1種):
select * from
(select a.*, rownum rn
from (select * from table_name) a
where rownum <= 40
)where rn >= 21
分頁查詢格式(第2種):
select * from
(select a.*, rownum rn
from (select * from table_name) a
)where rn between 21 and 40
對比這兩種寫法,絕大多數的情況下,第乙個查詢的效率比第二個高得多。
參考:
sqlserver 分頁
方法1:
select top 頁大小 *
from table1
where id not in
(select top 頁大小*(頁數-1) id from table1 order by id
)order by id
方法2:
select top 頁大小 *
from table1
where id >
(select isnull(max(id),0)
from
(select top 頁大小*(頁數-1) id from table1 order by id
) a)
order by id
方法3:
select top 頁大小 *
from
(select row_number() over (order by id) as rownumber,* from table1
) awhere rownumber > 頁大小*(頁數-1)
說明,頁大小:每頁的行數;頁數:第幾頁。使用時,請把「頁大小」和「頁大小*(頁數-1)」替換成數字。
通過sql 查詢分析器,顯示比較:我的結論是:
分頁方案二:(利用id大於多少和select top分頁)效率最高,需要拼接sql語句
分頁方案一:(利用not in和select top分頁) 效率次之,需要拼接sql語句
分頁方案三:(利用sql的游標儲存過程分頁) 效率最差,但是最為通用
參考:
mysql 分頁
mysql 的語法:
select * from table limit [offset,] rows | rows offset offset
limit 子句可以被用於強制 select 語句返回指定的記錄數。
limit 接受乙個或兩個數字引數。
引數必須是乙個整數常量。如果給定兩個引數,
第乙個引數指定第乙個返回記錄行的偏移量,第二個引數指定返回記錄行的最大數目。
初始記錄行的偏移量是 0(而不是 1)
具體的使用命令如下:
mysql> select * from table limit 5,10; // 檢索記錄行 6-15
//為了檢索從某乙個偏移量到記錄集的結束所有的記錄行,可以指定第二個引數為 -1:
mysql> select * from table limit 95,-1; // 檢索記錄行 96-last.
//如果只給定乙個引數,它表示返回最大的記錄行數目:
mysql> select * from table limit 5; //檢索前 5 個記錄行
//換句話說,limit n 等價於 limit 0,n。
參考:
各種資料庫分頁SQL總結
1.oracle,使用3層巢狀 quote select from select b.rownum as rn from select from ms user where comp cd 1 order by login user id b 1.先查出符合條件資料 where rownum 20 ...
各種資料庫分頁的sql語句
1.oracle資料庫分頁 select from select a.rownum rc from 表名 where rownum endrow a where a.rc startrow 2.db2資料庫分頁 select from select rownumber over as rc,a.fr...
各種資料庫分頁查詢sql語句
1.oracle資料庫分頁 select from select a.rownum rc from 表名 where rownum endrow a where a.rc startrow 2.db2資料庫分頁 select from select rownumber over as rc,a.fr...