MySQL: "inner join on"性能: "where" vs 添加到 "on"
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"中的方式更好。根据实际执行情况选择合适的方式可以提高查询的性能。