哪种方式更有效?
where @TeamId in (Team1Id, Team2Id)
或
where @TeamId=Team1Id or @TeamId=Team2Id
我正在使用sql server 2008.
编辑
当我检查执行计划时,两个查询都显示它们使用索引和相同的执行计划。
两者相同SQL server转换
where @TeamId in (Team1Id, Team2Id)
到
where @TeamId=Team1Id or @TeamId=Team2Id
写IN比写OR更容易读。
对于您提供的测试变量的特定示例,IN只是多个OR的语法糖。
但是,在选择关系的行的相关情况下,使用到另一个关系的连接是更好的,特别是当被比较的数据字段被索引或比较值列表增长时。这样的比较关系很容易使用如下静态子查询创建:
select *
from data
join (
select Team1Id as TeamId union all
select Team2Id
) comparison on comparison.TeamId = data.TeamId
这种静态子查询技术广泛适用于许多情况。