使用SubQuery的MySQL JOIN与MySQL IN

时间:2017-07-19 10:41:28

标签: mysql sql performance

我有2个表foo2和foo3,下面是图片。这些表格具有独特的列 - >标识。

表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);

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

感谢您的回答。

2 个答案:

答案 0 :(得分:1)

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

请务必注意,这两个查询相同。他们可能会在您的数据上返回相同的值,但如果JOIN中存在重复项,则foo3可能会返回重复的行。

作为个人偏好,如果两者要返回相同的行,我倾向于使用JOIN而不是IN(例如,因为我知道foo3.id是唯一的)

答案 1 :(得分:0)

您可以使用 INNER JOIN 方法。

正如您在第二种方法中所提到的, foo3 在表格 INNER JOIN 有数百万行的情况下可能会很好。因此 where 子句可能需要更长时间 import requests r = requests.get("http://vignette2.wikia.nocookie.net/matrix/images/d/df/Thematrixincode99.jpg/revision/latest?cb=20140425045724") with open("local-filename.jpg", 'wb') as f: f.write(r.content)