【问题标题】:Natural join 3 relations which order gives better performance?自然连接 3 关系哪个顺序可以提供更好的性能?
【发布时间】:2016-04-14 21:35:16
【问题描述】:

对于它的优化过程,它是加入结果较大的关系还是结果较小的关系?

【问题讨论】:

    标签: sql database performance oracle-sqldeveloper natural-join


    【解决方案1】:

    首先。不要使用NATURAL JOIN。这是一个等待发生的错误。 NATURAL JOIN 使用恰好与 JOIN 键具有相同名称的字段。它甚至没有考虑声明的外键关系。

    您现在可以编写查询,对基础表的微小更改可能会完全破坏查询(我承认,这也可能以其他方式发生)。然而,令人痛苦的是,逻辑在查询中是不可见的。所以请改用USINGON

    其次,大多数数据库都有优化阶段。此阶段确定处理的最佳顺序。因此,即使更改顺序也不会产生影响——因为数据库引擎会决定顺序(除非您用提示覆盖它)。

    【讨论】:

    • 感谢您的解释!我现在看到它是如何工作的。那么大多数数据库是如何确定其优化顺序的呢?
    • 它是如何确定的?它查看表统计信息、索引、缓存、内存以及各种事物,并尝试找出返回数据的最快方式。例如,如果索引表明对表 X 进行过滤将导致后续连接的记录大量减少,则它可能会决定先执行此操作。基本上你只需要知道数据库会尽快给出正确的结果。您可以用十几种不同的方式编写相同的功能查询,并且在大多数情况下,无论您将事物按什么顺序排列,您都将获得相同的查询计划
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多