2015-06-17 88 views
1

我最近一直在研究编写查询的最有效方法,以简化我正在设计的应用程序。我的一位同事提到我应该在可能的时候使用=而不是IN(),因为使用IN比使用=慢。但是,我一直无法找到任何资源来支持这一点。= IN运算符比IN运算符更高效T-SQL

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

所以你有一些代码来看看我问什么,这是我问的一个例子。

是这样的:

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

比这更有效:

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

这将是相同的。优化器将生成相同的计划 –

+2

编写可读代码。只在必要时进行优化。小心万恶的根源。 –

回答

2

如果是这种情况的SQL Server将执行这个(简单)重写你。事实并非如此。优化器的功能远不止如此简单的重写。

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

0

这实际上取决于您的查询。让我们说列IN(1,2,3)就像您正在搜索列= 1 OR列= 2或列= 3。如果您有索引它直到你使用IN运算符OR =运算符。对于多个值,我通常更喜欢USING'='运算符用于单值'IN'运算符。

0

把这两个放在SMSS中,然后显示查询计划。我将展示相同的计划,每个计划占总成本的50%。这将是向你的同事证明的最简单的方法。

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