這個sql的分頁很簡單,但是由於十分常用,且通常用於查詢大量數據的情況。
SELECT * FROM(
SELECT A.*,ROWNUM RN
FROM
(SELECT * FROM TABLE_XX ) A
WHERE ROWNUM<=20
) TL
WHERE RN >=11
這個sql高效的原因在於優化模式下,
Oracle可以將外層的查詢條件推到內層查詢中,以提高內層查詢的執行效率。
故此查詢中,查詢條件WHERE ROWNUM<=20就可以被Oracle推入到內層查詢中,
這樣Oracle查詢的結果一旦超過了ROWNUM限制條件,就終止查詢,將結果返回。
