Sou*_*avA 6 sql-server optimization in-clause
首先,对于模糊的主题名称感到抱歉(我想不出更好的东西)。
一个 SO 答案让我思考当我放弃=IN 时是否真的会对性能产生影响。
select 1 id, 'abc' name into #a union
select 2, 'abcd' union
select 3, 'abcde'
select * from #a where id = 1 ------ Query 1
select * from #a where id in (1)------ Query 2
Run Code Online (Sandbox Code Playgroud)
我检查了这两个查询的查询计划,发现它们对我来说是相同的(也许这个例子很简单,可能这就是原因)。
但是使用 时我是否违反了任何性能最佳实践IN?当然,这肯定会涉及一些开销,因为 anIN可以处理多个项目,甚至SELECTS. 我知道IN在功能方面提供了更多,但对于有多个记录的情况id = 1,
select * from #a where id = (SELECT id from #a where id = 1)------ Query 3
select * from #a where id in (SELECT id from #a where id = 1)------ Query 4
Run Code Online (Sandbox Code Playgroud)
query3 会失败,而 query4 会工作。因此我想在我的代码=中用INin future 替换。但我想知道任何潜在的权衡。
编辑我只是有兴趣了解 SQL 引擎如何(不同地?)处理这些语句。
如果可以的话,请忽略您问题的性能方面,这里存在一个设计问题。您应该按照自己的意图进行编码,这样当其他人阅读您的代码时,他们就有更好的机会理解您想要实现的目标。您希望 SELECT id from #a where id = 1只返回一条记录吗?如果是这样,则使用“=”。如果您期望它返回零或更多,那么“=”将是错误的。
| 归档时间: |
|
| 查看次数: |
4922 次 |
| 最近记录: |