本文實例彙總了Oracle實現分頁查詢的SQL語法,整理給你們供你們參考之用,詳情以下:sql
1.無ORDER BY排序的寫法。(效率最高)測試
通過測試,此方法成本最低,只嵌套一層,速度最快!即便查詢的數據量再大,也幾乎不受影響,速度依然!spa
sql語句以下:.net
?code
1
2
3
4
5
6
7
|
SELECT
*
FROM
(
Select
ROWNUM
AS
ROWNO, T.*
from
k_task T
where
Flight_date
between
to_date(
'20060501'
,
'yyyymmdd'
)
and
to_date(
'20060731'
,
'yyyymmdd'
)
AND
ROWNUM <= 20) TABLE_ALIAS
WHERE
TABLE_ALIAS.ROWNO >= 10;
|
2.有ORDER BY排序的寫法。(效率最高)htm
通過測試,此方法隨着查詢範圍的擴大,速度也會愈來愈慢!排序
sql語句以下:ci
?get
1
2
3
4
5
6
7
8
9
|
SELECT
*
FROM
(
SELECT
TT.*, ROWNUM
AS
ROWNO
FROM
(
Select
t.*
from
k_task T
where
flight_date
between
to_date(
'20060501'
,
'yyyymmdd'
)
and
to_date(
'20060531'
,
'yyyymmdd'
)
ORDER
BY
FACT_UP_TIME, flight_no) TT
WHERE
ROWNUM <= 20) TABLE_ALIAS
where
TABLE_ALIAS.rowno >= 10;
|
3.無ORDER BY排序的寫法。(建議使用方法1代替)
此方法隨着查詢數據量的擴張,速度會愈來愈慢!it
sql語句以下:
1
2
3
4
5
6
7
8
|
SELECT
*
FROM
(
Select
ROWNUM
AS
ROWNO, T.*
from
k_task T
where
Flight_date
between
to_date(
'20060501'
,
'yyyymmdd'
)
and
to_date(
'20060731'
,
'yyyymmdd'
)) TABLE_ALIAS
WHERE
TABLE_ALIAS.ROWNO <= 20
AND
TABLE_ALIAS.ROWNO >= 10;
TABLE_ALIAS.ROWNO
between
10
and
100;
|
4.有ORDER BY排序的寫法.(建議使用方法2代替)
此方法隨着查詢範圍的擴大,速度也會愈來愈慢!
sql語句以下:
1
2
3
4
5
6
7
8
|
SELECT
*
FROM
(
SELECT
TT.*, ROWNUM
AS
ROWNO
FROM
(
Select
*
from
k_task T
where
flight_date
between
to_date(
'20060501'
,
'yyyymmdd'
)
and
to_date(
'20060531'
,
'yyyymmdd'
)
ORDER
BY
FACT_UP_TIME, flight_no) TT) TABLE_ALIAS
where
TABLE_ALIAS.rowno
BETWEEN
10
AND
20;
|
5.另類語法。(有ORDER BY寫法)
該語法風格與傳統的SQL語法不一樣,不方便閱讀與理解,爲規範與統一標準,不推薦使用。此處貼出代碼供你們參考之用。
sql語句以下:
1
2
3
4
5
6
7
8
|
With
partdata
as
(
SELECT
ROWNUM
AS
ROWNO, TT.*
FROM
(
Select
*
from
k_task T
where
flight_date
between
to_date(
'20060501'
,
'yyyymmdd'
)
and
to_date(
'20060531'
,
'yyyymmdd'
)
ORDER
BY
FACT_UP_TIME, flight_no) TT
WHERE
ROWNUM <= 20)
Select
*
from
partdata
where
rowno >= 10;
|
6.另類語法 。(無ORDER BY寫法)
1
2
3
4
5
6
7
|
With
partdata
as
(
Select
ROWNUM
AS
ROWNO, T.*
From
K_task T
where
Flight_date
between
to_date(
'20060501'
,
'yyyymmdd'
)
and
To_date(
'20060531'
,
'yyyymmdd'
)
AND
ROWNUM <= 20)
Select
*
from
partdata
where
Rowno >= 10;
|
相信本文所述代碼可以對你們有必定的參考借鑑價值。