我读过很多关于不使用负运算符的文章,例如 NOT IN 和 NOT EXISTS 以及如何将逻辑反转为正运算符,例如使用 IN 相反 NOT IN 可能会带来非常好的性能。
无论如何,我对很多 CASE WHEN 运算符有看法并检查一些条件。我想知道(我仍然能够找到专门针对此问题的任何文章、问题或示例)使用 IS NOT NULL 和 IS NULL 会产生性能差异吗?
最佳答案
两者都可以作为索引查找来执行。
其中一个查找索引的开头,读取带有 NULL
的所有行,然后在遇到第一个 NOT 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/