MySQL: "inner join on"性能: "where" vs 添加到 "on"

30 浏览
0 Comments

MySQL: "inner join on"性能: "where" vs 添加到 "on"

这两者之间有性能差异吗?

在tableA和tableB之间进行内连接,条件是tableA的type = ?并且tableB的ref = tableA的id。
在tableA和tableB之间进行内连接,条件是tableB的ref = tableA的id,并且tableA的type = ?。

0
0 Comments

MySQL中使用"inner join on"的性能问题:使用"where"和将条件添加到"on"中哪种方式更好?

我猜它们将是相同的,但你可以通过在两者上运行EXPLAIN并查看实际计划来自己找出答案。

一般来说,在像SQL这样的声明性语言中,你不太可能找到那种如此简单的银弹优化方法。如果其中一种方法有显著的性能优势,优化器通常会识别出来并运行一个使用最高效技术的查询计划。

原因:

- 使用"where"和将条件添加到"on"中这两种方式在性能上可能是相同的。因为SQL是一种声明性语言,优化器会选择最有效的技术来执行查询计划。

- 如果其中一种方式具有显著的性能优势,优化器会自动识别并选择最高效的方式。

解决方法:

- 运行EXPLAIN命令来查看查询计划的实际执行情况,以确定使用"where"还是将条件添加到"on"中哪种方式更好。

- 根据查询计划的实际执行情况选择使用"where"或将条件添加到"on"中的方式。

示例代码:

-- 使用"where"的方式
SELECT *
FROM table1
INNER JOIN table2
WHERE table1.column1 = table2.column2;
-- 将条件添加到"on"中的方式
SELECT *
FROM table1
INNER JOIN table2
ON table1.column1 = table2.column2;

通过运行EXPLAIN命令并观察查询计划的实际执行情况,可以确定使用"where"还是将条件添加到"on"中的方式更好。根据实际执行情况选择合适的方式可以提高查询的性能。

0