=运算符比IN运算符T-SQL更高效

时间:2015-06-17 16:28:14

标签: sql performance tsql

我最近一直在研究编写查询的最有效方法,以简化我设计的应用程序。我的一位同事提到我应该尽可能使用=而不是IN()因为使用IN比使用=慢。但是,我还没有找到任何支持这一点的来源。

有谁知道这是否属实?如果是这样,你碰巧知道为什么吗?

所以你有一些代码可以看到我在问什么,这就是我要问的一个例子。

这是:

SELECT [Some Columns]... FROM db.dbo.table WHERE [this column] = 'Something' 

比这更有效:

SELECT [Some Columns]... FROM db.dbo.table WHERE [this column] IN ('Something' )

3 个答案:

答案 0 :(得分:2)

如果是这种情况,SQL Server将为您执行此(简单)重写。事实并非如此。优化器的功能远远超出了这些微不足道的重写。

你的同事对SQL Server有着迷信的信念。

答案 1 :(得分:0)

这实际上取决于你的查询。让我们说列IN(1,2,3)就像你在搜索column = 1 OR column = 2 OR column = 3.如果你有索引,你可以使用IN运算符OR = operator.I通常更喜欢USING'='运算符用于单值“IN”运算符以获取多个值。

答案 2 :(得分:0)

将两者放入SMSS,然后显示查询计划。我将为每个计划显示相同的计划,并将其作为总成本的50%。这将是向您的同事证明的最简单方法。

有一些语法可以更高效,就像在in中存在一样,但这不是其中一种情况。