Oracle分页技术


1、使用两层嵌套

SELECT *
  FROM (SELECT A.*, ROWNUM RN
          FROM (SELECT * FROM edw_t100_bal_all) A
         WHERE ROWNUM <= 40)
 WHERE RN >= 21;

2、使用between..and..

SELECT *
  FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM edw_t100_bal_all) A)
 WHERE RN between 21 and 40;

3、实践证明:方法1比方法2效率更高

SELECT /* + FIRST_ROWS */ *
  FROM (SELECT A.*, ROWNUM RN
          FROM (SELECT * FROM edw_t100_bal_all) A
         WHERE ROWNUM <= 40)
 WHERE RN >= 21;

以上语句会以更高的效率执行。

相关内容