为什么" OR操作"或OR条件不可s?

时间:2015-03-13 14:35:58

标签: sql sql-server

在文献中,我已经读过在WHERE子句中使用OR条件或运算符生成语句non-sargable。我不确定为什么或如何这是真的。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:5)

答案由权威优化书SQL Server Query Performance Tuning, Grant Fritchey的作者提供。所以这就是:

" OR语句现在比以前更优化了。但是如果你考虑一下,如果我有一个索引并且我想匹配等于A或Z的值,那么引擎必须进行多次比较,而不仅仅是一次。可搜索的条件都导致直接点查找或范围查找。 So = A将遍历一棵树并从该值的索引中检索一行或一组行。但如果它是A或R,它无法检索范围,它必须做其他类型的工作。有时你会看到这些完成了两个寻找与JOIN操作。这太好了。但有时你会看到额外的过滤器操作员或扫描。所以,它不是可以捣乱的。" (再次,归功于作者)