sqlserver中is null条件是否使用索引的问题(测试结果是null值也可以使用索引?)
看了一些资料,有提到使用is null条件时不使用索引;
所以本打算用 ' '代替null;
但经测试is null还是使用索引的;只有is not null不使用索引;
但 <> ' '也是不使用索引的,所以感觉没有必要用 ' '替换null;
测试语句--------
select alias from fileinfo where alias is null
---使用索引:
(501 行受影响)
表 'FileInfo '。扫描计数 1,逻辑读取 650 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 137 毫秒。
---不使用索引:
(501 行受影响)
表 'FileInfo '。扫描计数 3,逻辑读取 491401 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
SQL Server 执行时间:
CPU 时间 = 2968 毫秒,占用时间 = 1663 毫秒。
--------------------
所以null值也还是可以使用索引???????
能提供些权威性的资料或说明最好,谢谢
------解决方案--------------------sqlserver 的null值可以索引,
------解决方案-------------------- SQLSERVER是会将NULL值存入索引树的,这和它的数据结构有关,通过NULL位图,它可以处理NULL值,而索引叶子节点中的数据存放结构和表数据行的结构是大同小异的,唯一索引中不可出现null