我已经阅读了很多不使用否定运算符(如 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/