我想知道,在下面所述的两个查询之间,关于性能的哪一个最佳,或者它们的表现相同?
第一个:[没有WHERE子句,只有AND与ON]
SELECT related_tabid AS tabid, label, t.name
FROM relatedlists r
INNER JOIN tab t
ON t.tabid = r.tabid
AND t.name = 'Leads'
AND r.is_active=1 and r.related_tabid <> 0
AND t.is_active=1
ORDER BY label
第二个:[使用WHERE子句,AND与where关联,而不是ON]
SELECT related_tabid AS tabid, label, t.name
FROM relatedlists r
INNER JOIN tab t
ON t.tabid = r.tabid
WHERE t.name = 'Leads'
AND r.is_active=1 and r.related_tabid <> 0
AND t.is_active=1
ORDER BY label
最佳答案
这两个查询是相同的,因为使用的联接是INNER JOIN
。 INNER JOIN
基本上只过滤与另一个表至少匹配的行。即使两个表互换,结果仍然相同。
但是,如果您通过LEFT JOIN
加入它们,则这两个查询彼此不同,并且将产生不同的结果。