哪种应该是首选且有效的方式?
where @TeamId in (Team1Id, Team2Id)
或
where @TeamId=Team1Id or @TeamId=Team2Id
我正在使用sql server 2008。
修改
当我检查执行计划时,两个查询都显示他们正在使用索引和相同的执行计划。
答案 0 :(得分:5)
两者都是一样的 SQL服务器转换此
where @TeamId in (Team1Id, Team2Id)
向
where @TeamId=Team1Id or @TeamId=Team2Id
最好将IN与OR进行比较,更易读,更容易。
答案 1 :(得分:0)
对于提供的特定示例,测试变量,IN只是多个OR的语法糖。
然而,在选择关系行的相关情况下,使用连接到另一个关系是优越的,特别是如果被比较的数据字段被索引或者比较值列表增长。使用如下的静态子查询可以轻松创建这样的比较关系:
select *
from data
join (
select Team1Id as TeamId union all
select Team2Id
) comparison on comparison.TeamId = data.TeamId
这种静态子查询技术广泛适用于许多情况。