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