【问题标题】:Paginated query optimization分页查询优化
【发布时间】:2021-06-08 13:11:02
【问题描述】:

分页查询优化

如果你能提供你的见解,那将是一个真正的帮助。

我有一个包含多个连接和过滤条件的查询,对结果进行排序,最后只检索到 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 将是更好的选择。我该如何确认?请帮忙。

【问题讨论】:

    标签: oracle query-optimization database-performance sqlperformance


    【解决方案1】:

    选项二更preformant,原因很明显,您不需要排序

    缺点(通常也是需要第一个选项的原因)是第二个选项提供不稳定的结果,即您每次可能得到不同的 100 行如果您的数据未更改,则事件。

    顺便说一句,Oracle 可以优化第一个选项,您无需对整个游标结果进行排序,而只需找到前 N 行并将它们排序返回。

    【讨论】:

      猜你喜欢
      • 2023-02-15
      • 2021-06-03
      • 1970-01-01
      • 2011-06-27
      • 1970-01-01
      • 2011-03-04
      • 2012-05-19
      • 2018-09-10
      • 1970-01-01
      相关资源
      最近更新 更多