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 ---2.找出20行之前数据
)C
WHERE
C.RN >=10 ---3.找出10行之后数据
[/quote]
SQL执行时会被优化,第二层的条件会被整合在最内层里,所以实际上子查询抽出的只是符合条件的20行之前的数据,所以这个SQL在查询靠前的数据时,比较快,越向后越慢。
[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 ---2.找出20行之前数据
)C
WHERE
C.RN >=10 ---3.找出10行之后数据
[/quote]
SQL执行时会被优化,第二层的条件会被整合在最内层里,所以实际上子查询抽出的只是符合条件的20行之前的数据,所以这个SQL在查询靠前的数据时,比较快,越向后越慢。