gpt4 book ai didi

java - SQL速度提升: Left Join,或笛卡尔积/where子句

转载 作者:行者123 更新时间:2023-11-29 23:57:04 24 4
gpt4 key购买 nike

我正在 Web 服务中使用 SQL 查询,并希望提高其速度。截至目前,查询获取多个表的笛卡尔积,并使用 where 子句将它们分开。

我想知道切换到 LEFT JOIN 是否会使查询执行得更快,因为我想要的结果中的每一行都基于一个表,并从其他表中提取附加信息。

最佳答案

无法使用笛卡尔语法来表达 MySQL 中 LEFT JOIN 的意图。

在 Oracle 中,这种所谓的 omega-join 语法

SELECT whatever FROM A, B WHERE A.col=B.col(+) 

相当于:

SELECT whatever FROM A LEFT JOIN B ON A.col=B.col

但在 MySQL 中只有后一种语法有效。因此,如果您想在 MySQL 中执行真正的LEFT JOIN 操作,您别无选择:笛卡尔/WHERE 语法不起作用。

就优化而言,MySQL 的查询执行规划器可以很好地理解以笛卡尔/WHERE 语法表示的普通INNER JOIN 操作。但使用 JOIN 语法几乎总是更好。它更容易阅读,并且查询规划器也能理解。

关于java - SQL速度提升: Left Join,或笛卡尔积/where子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25271333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com