我已经阅读了很多不使用负运算符(例如NOT IN和NOT EXISTS)以及如何将逻辑反转为正运算符,例如使用IN而不是NOT IN可以带来非常好的性能。
无论如何,我对很多 CASE WHEN 运算符和检查一些条件有一个看法。我想知道(我仍然能够找到任何专门针对此的文章、问题或示例)在使用IS NOT NULL和IS NULL时会产生性能差异吗?
我已经阅读了很多不使用负运算符(例如NOT IN和NOT EXISTS)以及如何将逻辑反转为正运算符,例如使用IN而不是NOT IN可以带来非常好的性能。
无论如何,我对很多 CASE WHEN 运算符和检查一些条件有一个看法。我想知道(我仍然能够找到任何专门针对此的文章、问题或示例)在使用IS NOT NULL和IS NULL时会产生性能差异吗?
两者都可以作为索引查找来执行。
其中一个寻找索引的开头,读取所有行,NULL然后在遇到第一个行时停止,NOT NULL另一个寻找第一个NOT NULL值,然后读取索引的整个其余部分。
除非索引被覆盖,否则在任何一种情况下都不能使用搜索,因为它归结为选择性。如果您有很多NULL值,因此NOT NULL具有高度选择性,您可能需要考虑按照此处的示例在该列上创建过滤索引。