在SQL Server中,一个表中大约有4.500.000行。
Status_code
可以1, 2, 3, 4, 5, 6, 7, 8, 9, 10
.
哪个查询的运行速度最快?
查询 #1:
Select *
from Table
where status_code not in (1)
查询 #2:
Select *
from Table
where status_code <> 1
查询 #3:
Select *
from Table
where status_code in (2, 3, 4, 5, 6, 7, 8, 9, 10)
如果没有索引,您将对每个索引进行相同的表扫描操作,因此成本将是相同的。
当您考虑索引时,查找谓词可能会略有变化。 1 和 2 通常是相同的,因为它有效地引入了相同的谓词(Status_Code <1、Status_Code> 1(。3 的谓词将是每个可能的包含值的相等性检查。
这是否总体上有所不同取决于 - 您需要查看实际的执行计划告诉您的内容。