查询性能INNER JOIN ON和比较

Ras*_*lam 17 sql performance join

我想知道哪一个最适合下面所述的两个查询之间的性能,还是它们的表现相同?

第一个:[没有WHERE子句,只是和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
Run Code Online (Sandbox Code Playgroud)

第二个:[使用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
Run Code Online (Sandbox Code Playgroud)

Joh*_*Woo 11

两个查询都是相同的,因为使用的连接是INNER JOIN.INNER JOIN基本上它只过滤在另一个表上至少匹配的行.即使这两个表是交换的,结果仍然是相同的.

但是如果您通过它们加入它们LEFT JOIN,则两个查询彼此不同并且将产生不同的结果.

  • 一篇很好的文章解决你的问题:[INNER JOIN vs LEFT JOIN performance](http://stackoverflow.com/questions/2726657/inner-join-vs-left-join-performance-in-sql-server) (2认同)