Mysql 左连接优化
我想知道这样做是否更好:Mysql 左连接优化,mysql,database,performance,Mysql,Database,Performance,我想知道这样做是否更好: SELECT * FROM table1 LEFT JOIN table2 ON table1.field1=table2.id AND table2.field2="mystring" WHERE table2.field2="mystring" 而不是简单地这样做: SELECT * FROM table1 LEFT JOIN table2 ON table1.field1=table2.id WHERE table2.field2="my
SELECT * FROM table1
LEFT JOIN table2 ON table1.field1=table2.id
AND table2.field2="mystring"
WHERE table2.field2="mystring"
而不是简单地这样做:
SELECT * FROM table1
LEFT JOIN table2 ON table1.field1=table2.id
WHERE table2.field2="mystring"
MySQL引擎是为我做这种优化,还是显式地做更好
是否:
SELECT * FROM table1
JOIN table2 ON table2.field2="mystring" AND table2.id=table1.field1
有同样的效果,结果会一样吗
编辑:再精确一些,我的问题是:
- 我假设上述3个查询在给定结果方面是等价的。是真的吗(尤其是第三个)
- 我想知道引擎是否在性能方面对它们一视同仁(换句话说,我是否需要担心使用哪一个呢)
输出可以不同。在这种情况下,第一个查询比第二个查询显示更多的结果。要将这些查询与不同类型的查询之间的性能进行比较,您可以使用
EXPLAIN
语法Thx作为答案,但您给出的第一个查询不在我的问题范围内。这是原始查询:从表1中选择*左连接表1上的表2。field1=table2.id和table2.field2=“mystring”其中table2.field2=“mystring”
SELECT * FROM table1
LEFT JOIN table2 ON table1.field1=table2.id
AND table2.field2="mystring"
SELECT * FROM table1
LEFT JOIN table2 ON table1.field1=table2.id
WHERE table2.field2="mystring"