我最近一直在研究编写查询的最有效方法,以简化我设计的应用程序。我的一位同事提到我应该尽可能使用=而不是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' )
答案 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中存在一样,但这不是其中一种情况。