带有OR条件的LEFT OUTER JOIN< - 杀死数据库服务器

时间:2013-04-03 09:25:59

标签: mysql join outer-join

简而言之......

SELECT * 
FROM tbl1 
LEFT OUTER JOIN tbl2 ON tbl1.ID = tbl2.externalRefID 
WHERE tbl1.varref = '12345' OR tbl2.varref = '12345';

对于这些表中的任何数据量,此查询将永远存在。然而,我需要连接第二个表,因为它不会经常匹配externalRefID。为所有引用的列创建的索引但没有区别,因为我需要跨多个表的索引(可能吗?)

这一定是显而易见的,但我看不到树上的木头......

1 个答案:

答案 0 :(得分:0)

您是否考虑过将查询重构为UNION查询?

SELECT *
  FROM tbl1 INNER JOIN tbl2 ON tbl1.id = tbl2.externalRefId
 WHERE tbl2.varref = '12345'
UNION
SELECT *
  FROM tbl1 OUTER JOIN tbl2 ON tbl1.id = tbl2.externalRefId
 WHERE tab.1.varref = '12345'

您也可以在此使用UNION ALL。