4

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

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

4

1 回答 1

4

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

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

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

于 2012-11-12T09:06:54.463 回答