oracle 分页查询优化

在sql优化过程当中,发现分页查询的几种写法性能差别较大

第一种

SELECT * FROM (
SELECT row_number() OVER(ORDER BY null) as rn, a.*
FROM TABLE_NAME a
WHERE TO_DATE(substr(a.DE, 0, 8), 'YYYY-MM-DD')>=TO_DATE(:1 , 'YYYY-MM-DD')
) A
WHERE A.RN > :24867
AND A.RN <= :24868 ;
第二种
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= :24867
)
WHERE RN >=:24868

第二种性能更好,建议使用第二种做分页查询

原文地址:https://www.cnblogs.com/omsql/p/15687280.html