分页查询优化
如果你能给出你的见解,那将是一个真正的帮助。
我有一个具有多个连接和过滤条件的查询,结果被排序,最后只检索到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;选项2将是更好的选择,如果我们可以摆脱排序,并选择100条记录,我们有它。我怎么确认呢?请帮帮忙。
发布于 2021-03-10 23:22:00
第二种选择更有优势,原因很明显,你不需要排序。
缺点(通常也是需要选项1的原因)是第二个选项提供了不稳定的结果,即如果数据不变,每次可能会得到不同的100行事件。
顺便说一句,Oracle可以优化第一个选项,您不需要对整个游标结果进行排序,只需找到前N行并将它们排序返回即可。
https://stackoverflow.com/questions/66567344
复制相似问题