我有一张桌子,我们就叫它吧History
。主键(又名聚集索引)称为HIST_ID
. 该表在开发数据库中有大约 2300 行。现在考虑以下两个查询:
查询一:
declare @x int
set @x = 14289
select * from History where hist_id=@x
查询 2:
declare @x int
set @x = 14289
select * from History where hist_id=@x or @x is null
唯一的区别是or @x is null
最后。但是,第一个查询执行索引查找,第二个查询执行索引扫描。是什么赋予了?
先发制人的答复 - 不,选项(重新编译)没有帮助。
补充:我想要一些有说服力的事实,而不是猜测。我自己可以猜出十几个可能的原因。但这里真正的问题是什么?