【发布时间】:2019-10-02 12:16:15
【问题描述】:
了解到当我们在mysql中使用join(left join or right join, not inner join)语句时,mysql会生成一个笛卡尔积作为临时表。
但是有人告诉我,如果on 语句中使用的列有索引,
不会生成笛卡尔积。
我不确定他是否正确,因为我找不到有关它的文章或手册。他说的对吗?
顺便说一句,有人告诉我不要在生产环境中使用join 语句,因为它可能有潜在的问题。但我认为使用join 并没有什么坏处。而且如果我们仔细优化sql,就不用担心性能问题了。我们应该禁止在生产环境中使用join吗?谢谢。
【问题讨论】:
-
我怀疑有点拉扯腿。当然,没有 on 子句的内部连接会生成笛卡尔积,交叉连接和隐式(逗号分隔)连接也会生成。但是禁止使用正确构造的连接是无稽之谈,因为 sql 没有其他链接表的方法(忽略联合)
标签: mysql join optimization