繁体   English   中英

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

[英]LEFT OUTER JOIN with an OR condition <- kills db server

简而言之..

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

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

这一定很明显,但是我看不到树木的木头...

您是否考虑过将查询重构为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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM