我可能没有说出正确的问题,因为'或'而我的查询需要花费大量时间。
select stuff
from table1 T1
left join table2 T2 on T2.field1 = T1.field or T2.field2 = T1.field
where some condition
我必须检查两个字段才能加入。有更好的方法吗?
答案 0 :(得分:3)
根据所提供的内容,我可以考虑两种选择:
select stuff
from table1 T1
left join table2 T2 on T1.field IN (T2.field1, T2.field2)
where some condition
请注意,我使用了UNION ALL
- 它比UNION
快,但UNION
会删除重复项,以便根据您的需要进行更改:
select stuff
from table1 T1
left join table2 T2 on T1.field = T2.field1
where some condition
UNION ALL
select stuff
from table1 T1
left join table2 T2 on T1.field = T2.field2
where some condition
答案 1 :(得分:2)
如果您遵循规则T2.field1 = T1.field true或T2.field2 = T1.field。 当输出取决于至少一个是真的。
**select stuff
from table1 T1, table2 T2
where some condition AND (T2.field1 = T1.field or T2.field2 = T1.field)**
答案 2 :(得分:0)
您可以使用T1.field IN (T2.field1, T2.field2)
,但我怀疑它会提高您的查询效果。