我尝试在我经常使用的一些查询中优化索引的使用。最近我了解到,在where子句中使用函数和隐式转换并不是最优的。令我惊讶的是,由于正确使用索引,隐式转换可以更快。 我有一个名为Records的表。聚集索引&主键位于Id列(int)上,而非聚集索引位于已创建的列(datetime)上。为了避免隐式转换,我创建了@dd变量。 declare @dd Datetime
select * from Records where Created > @ddselect
但我对它的用法有一些疑问:什么时候推荐使用它?在性能方面,使用它与使用"AND NOT EXISTS...“的相关查询之间是否存在差异?在阅读了EXCEPT在the BOL上的文章后,我认为这只是第二种选择的简写,但当我用它重写了几个查询时,我感到惊讶(所以他们有更熟悉的"AND NOT EXISTS“语法),然后检查了执行计划-惊喜!EXCEPT版本的执行计划更短,执行速度也更快。这种情况一直都是这样吗?
所以我想知道:使用这个强大的工具的指导方针是什么?