我有2个表foo2和foo3,下面是图片。这些表格具有独特的列 - >标识。
表foo2:
表foo3:
我想从两个具有相同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 :(得分: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)
。