【问题标题】:Difference between A JOIN B vs B JOIN AA JOIN B 与 B JOIN A 之间的区别
【发布时间】:2017-05-17 13:34:22
【问题描述】:

我重新问这个问题是因为我认为它在没有令人满意的答案的情况下被错误地关闭: 原始问题: 在处理表 A 的行数比 B 少得多的大型数据集时,将表 A 与 B 连接和 B 与 A 连接有什么区别? A JOIN B vs B JOIN A

【问题讨论】:

  • 它很可能已被广泛关闭,因为有太多事情会影响此类查询的性能,而不是您的问题中所述的内容。 IOW,事情没那么简单。

标签: mysql performance join


【解决方案1】:

因此 join 将从两个表中获取匹配的记录,因此逻辑上没有区别

【讨论】:

    【解决方案2】:

    是的。可能会有很大的不同。 在进行常规 JOIN 时,MySQL 将尝试自动检测连接 2 个表的顺序。但是,有时,它决定走的路并不是最好的。如果大表有索引而小表没有(或者是临时表),则尤其如此。 MySQL 倾向于使用索引而不是使用未索引的表作为其主表。 最近我有一个查询需要几秒钟。这是 A JOIN B 的情况,其中 A 很大并被索引,而 B 很小。 当我更新为 A RIGHT JOIN B 时,性能提高到几分之一秒。

    【讨论】:

    • 您的问题是关于JOIN。这个答案并没有说由于表的指定顺序,查询的执行方式不同,而不是索引和/或RIGHT 很重要。这是一个不同的问题。
    • 而且,是的,优化器有一些基于索引等的指南,但它们确实包括A JOIN B vs B JOIN A
    猜你喜欢
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2016-05-04
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 2017-12-24
    相关资源
    最近更新 更多