Oracle 分页查询优化
分页查询优化 如果你能给出你的见解,那将是一个真正的帮助 我有一个带有多个联接和筛选条件的查询,结果被排序,最后只检索到100条记录。哪个更有效 备选案文1:Oracle 分页查询优化,oracle,query-optimization,database-performance,sqlperformance,Oracle,Query Optimization,Database Performance,Sqlperformance,分页查询优化 如果你能给出你的见解,那将是一个真正的帮助 我有一个带有多个联接和筛选条件的查询,结果被排序,最后只检索到100条记录。哪个更有效 备选案文1: select * from ( SELECT INTR.col1 AS ID FROM INTR, TR, J WHERE INTR.col1 > ? AND ........ AND ........
select * from
( SELECT INTR.col1 AS ID
FROM INTR, TR, J
WHERE
INTR.col1 > ?
AND ........
AND ........
AND ........
ORDER BY INTR.col1
)
where rownum <= 100;
备选案文2:
SELECT INTR.col1 AS ID
FROM INTR, TR, J
WHERE
INTR.col1 > ?
AND ........
AND ........
AND ........
AND rownum <= 100;
如果我们能够摆脱排序并在获得100条记录后立即选择它,那么选项2将是更好的选择。我如何确认?请提供帮助。选项二更为有效,原因很明显,您不需要排序
缺点是,第二个选项提供了不稳定的结果,也就是说,如果数据保持不变,每次发生不同的100行事件时,您可能会得到不同的结果,这通常也是需要选项一的原因
顺便说一句,Oracle可以优化第一个选项,您不需要对整个游标结果进行排序,只需找到前N行并返回排序的结果