sql-server - T-SQL IS NOT NULL 与 NOT NULL 性能

标签 sql-server tsql null comparison

我读过很多关于不使用负运算符的文章,例如 NOT INNOT EXISTS 以及如何将逻辑反转为正运算符,例如使用 IN 相反 NOT IN 可能会带来非常好的性能。

无论如何,我对很多 CASE WHEN 运算符有看法并检查一些条件。我想知道(我仍然能够找到专门针对此问题的任何文章、问题或示例)使用 IS NOT NULLIS 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/

相关文章:

sql-server-2008 - 在存储过程中计算加权(贝叶斯)平均分数/索引?

date - 将 ABAP 日期转换为 HANA 日期,如果为空则返回 NULL

sql-server - SQL Server 中的四舍五入?

sql-server - 系统设计问题

sql - 如何将此 T-SQL 代码转换为 PostgreSQL/plpgsql

sql - T-SQL 到 XML - 每个属性的多个值可以在它们自己的行中列出吗?

python - 是否可以让 sqlalchemy 创建一个带有整数部分的复合主键而不使其成为 IDENTITY 类型?

java - 将 jtextbox 值和 jradiobutton 值插入数据库

java - 在 Java vector 中插入 null

c++ - 指向空对象的引用