我有两个查询:
SELECT m.id, m.name, f.type, c.id
FROM main AS m, filter AS f, city AS c
WHERE m.id = f.id AND c.name = m.city;
和
SELECT m.id, m.name, f.type, c.id
FROM main AS m
INNER JOIN filter as f ON m.id = f.id
INNER JOIN city AS c ON c.name = m.city;
两者应该给出相同的输出集合。我对一个小的值集运行它们,它工作得很好,但是当我对一个非常大的值集运行它们时,两者都返回非常不同的行数(第一个返回~500K行,而第二个返回~65K行)。这两个查询有什么不同吗?
[编辑]:
我使用mysql作为RDBMS
即使查询#2是推荐的标准。两个查询应该返回相同的结果。
我的建议。比较那些分隔的连接查询
SELECT m.id, m.name, f.type
FROM main AS m, filter AS f
WHERE m.id = f.id;
SELECT m.id, m.name, f.type
FROM main AS m
INNER JOIN filter as f ON m.id = f.id;
和
SELECT m.id, m.name, c.id
FROM main AS m, city AS c
WHERE c.name = m.city;
SELECT m.id, m.name, f.type, c.id
FROM main AS m
INNER JOIN city AS c ON c.name = m.city;
如果有什么不同,请告诉我们。(不应该是any)