Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 左连接优化_Mysql_Database_Performance - Fatal编程技术网

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个查询在给定结果方面是等价的。是真的吗(尤其是第三个)

  • 我想知道引擎是否在性能方面对它们一视同仁(换句话说,我是否需要担心使用哪一个呢)


如果table2.field2=“我的字符串”

如果是表2.2,则不会显示表1的记录=“我的字符串”


输出可以不同。在这种情况下,第一个查询比第二个查询显示更多的结果。

要将这些查询与不同类型的查询之间的性能进行比较,您可以使用
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"