关键字'的任何替代品;或';在sql语句中?
我可能没有正确回答这个问题,因为我有一个问题因为“或”而花费了大量的时间关键字'的任何替代品;或';在sql语句中?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我可能没有正确回答这个问题,因为我有一个问题因为“或”而花费了大量的时间 select stuff from table1 T1 left join table2 T2 on T2.field1 = T1.field or T2.field2 = T1.field where some condition 我必须检查两个字段才能加入。有更好的方法吗?根据所提供的内容,我可以想到两种选择: 改用 使用工会 请注意,我使用的是UNION ALL——它比UNION快,但是UNION会删除重复项,以
select stuff
from table1 T1
left join table2 T2 on T2.field1 = T1.field or T2.field2 = T1.field
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
如果遵循该规则,则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)**
您可以在(T2.field1,T2.field2)中使用
T1.field
,但我怀疑它是否会提高查询性能 括号不能提高性能;它们只确保操作的顺序。@Eric:那么你必须提供实际的细节,以便我们诊断性能问题。我使用的是Union而不是Union all。似乎给出了我需要的结果。我假设T2.field1和T2.field2是字符串?也许有些指数是正确的?您是否已在sql server management studio中签出查询计划?
**select stuff
from table1 T1, table2 T2
where some condition AND (T2.field1 = T1.field or T2.field2 = T1.field)**