Oracle 分页查询优化

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 ........

分页查询优化

如果你能给出你的见解,那将是一个真正的帮助

我有一个带有多个联接和筛选条件的查询,结果被排序,最后只检索到100条记录。哪个更有效

备选案文1:

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行并返回排序的结果