2017-07-19 140 views
0

我有2个表foo2和foo3与下面的图片。这些表具有唯一的列 - >标识。MySQL JOIN与MySQL IN与子查询

表foo2的:

enter image description here

表foo3:

enter image description here

我想从同一个ID两个表选择数据。我有2个这样的查询

QUERY1:

SELECT 
    foo2.id, 
    foo2.`name` 
FROM 
    foo2 
WHERE foo2.id IN (SELECT id FROM foo3); 

QUERY2:

SELECT 
    foo2.id, 
    foo2.`name` 
FROM 
    foo2 
INNER JOIN foo3 ON (foo2.id = foo3.id); 

这些查询返回相同的数据。我想知道哪一个更好?哪一个是有效的?

感谢您的回答。

+0

取决于数据。对于大数据,联接通常更好。 –

+0

query1 cuz' join'执行执行 – Jenish

+0

使用'EXPLAIN'查看查询规划器告诉你的内容:https://dev.mysql.com/doc/refman/5.7/en/using-explain.html –

回答

1

如果您想知道哪个性能更好,请在您的数据和系统上测试两个查询。

重要的是要注意两个查询是不是一样。他们可能会在您的数据上返回相同的值,但JOIN可能会返回重复的行,如果foo3中有重复项。

由于个人喜好,我会倾向于使用JOIN而非IN如果两个要返回相同的行(比如,因为我知道,foo3.id是唯一的)。

0

你可以用Query2的方法。

正如第二种方法提一下你INNER JOIN可以很好的在场景表foo3了数百万行的。所以其中子句可能需要更多时间然后INNER JOIN