Sql server SQL Server性能<>;,不在,在

Sql server SQL Server性能<>;,不在,在,sql-server,Sql Server,在SQL Server中,一个表中大约有4.500.000行 状态\u code可以是1、2、3、4、5、6、7、8、9、10 哪个查询运行得最快 问题#1: 问题2: 如果没有索引,您将为每个索引执行相同的表扫描操作,因此成本将相同 当你考虑索引时,搜索谓词可能稍微改变。1和2通常是相同的,因为它有效地引入了相同的谓词(Status_Code1)。3的谓词将对每个可能包含的值进行相等检查 总体而言,这是否会产生影响取决于-您需要了解实际执行计划告诉您的内容。“这取决于”,您应该尝试运行它并进行

在SQL Server中,一个表中大约有4.500.000行

状态\u code
可以是
1、2、3、4、5、6、7、8、9、10

哪个查询运行得最快

问题#1:

问题2:


如果没有索引,您将为每个索引执行相同的表扫描操作,因此成本将相同

当你考虑索引时,搜索谓词可能稍微改变。1和2通常是相同的,因为它有效地引入了相同的谓词(Status_Code<1,Status_Code>1)。3的谓词将对每个可能包含的值进行相等检查


总体而言,这是否会产生影响取决于-您需要了解实际执行计划告诉您的内容。

“这取决于”,您应该尝试运行它并进行测量;)它取决于匹配记录的数量、表上的索引、您正在进行的度量(搜索时间?检索时间?搜索和检索?)。。。太阳,月亮。。。太宽泛了你应该回答的第一个问题是哪一个最正确?一般来说,随着时间的推移,“地位”等领域会发生变化。通常会添加值;它们很少被更改或删除。因此,如果我们假设未来会带来额外的状态值,那么哪个查询最能表达您的目标?是的。
Select * 
from Table 
where status_code not in (1)
Select * 
from Table 
where status_code <> 1
Select * 
from Table 
where status_code in (2, 3, 4, 5, 6, 7, 8, 9, 10)