0

哪种方式应该是首选和有效的方式?

where @TeamId in (Team1Id, Team2Id)

或者

where @TeamId=Team1Id or @TeamId=Team2Id

我正在使用 sql server 2008。

编辑

当我检查执行计划时,两个查询都显示它们使用的是索引和相同的执行计划。

4

2 回答 2

5

两者都是同一个 SQL 服务器转换这个

where @TeamId in (Team1Id, Team2Id)

进入

where @TeamId=Team1Id or @TeamId=Team2Id

与 OR 相比,最好写 IN 更易读和更容易。

于 2013-04-07T14:21:52.057 回答
0

对于您提供的测试变量的具体示例,IN 只是多个 OR 的语法糖。

然而,在选择关系的行的相关情况下,使用连接到另一个关系是优越的,特别是如果正在比较的数据字段被索引或比较值列表增长。使用这样的静态子查询很容易创建这样的比较关系:

select *
from data
join (
  select Team1Id as TeamId union all
  select Team2Id 
) comparison on comparison.TeamId = data.TeamId

这种静态子查询技术广泛适用于许多情况。

于 2013-04-07T15:19:00.957 回答