我已经阅读了很多不使用否定运算符(如 NOT IN 和 NOT EXISTS)以及如何将逻辑反转为正运算符(例如,使用 IN 而不是 NOT IN 可能会导致非常好的性能)。

无论如何,我有很多 CASE WHEN 运算符的 View 并检查了一些条件。我想知道(我仍然能够找到任何特定于此的文章、问题或示例)在使用 IS NOT NULL 和 IS NULL 时会产生性能差异吗?

最佳答案

两者都可以作为索引查找来执行。

其中一个查找索引的开头,使用 NULL 读取所有行,然后在遇到第一个 NOT NULL 时停止,另一个查找第一个 NOT NULL 值,然后读取索引的整个其余部分。

除非索引覆盖,否则在任何一种情况下都不能使用搜索,因为它归结为选择性。如果您有许多 NULL 值,因此 NOT NULL 具有高度选择性,您可能需要考虑在该列 as per the example here 上创建过滤索引。

关于sql-server - T-SQL IS NOT NULL 与 NOT NULL 性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13340702/

10-11 03:31
查看更多