sqlserver中is null条件是否使用索引的问题(测试结果是null值也可以使用索引?)

dotnetjyh 2007-03-15 03:54:29
看了一些资料,有提到使用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值也还是可以使用索引???????
能提供些权威性的资料或说明最好,谢谢
...全文
1126 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dotnetjyh 2007-04-30
  • 打赏
  • 举报
回复
在执行SQL语句时执行这两句即可;

Set statistics time on
Set statistics IO on

具体信息及相关选项见

http://www.easewe.com/Article/Document/%CA%FD%BE%DD%BF%E2/%CA%B9%D3%C3%20SQL%20%B2%E9%D1%AF%B7%D6%CE%F6%C6%F7%D6%D0%B5%C4%20SET%20%D1%A1%CF%EE.html
弘毅致远 2007-03-16
  • 打赏
  • 举报
回复
是不是专门的测试工具测出来的。
弘毅致远 2007-03-16
  • 打赏
  • 举报
回复
---使用索引:
(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 次。
-------------------------------------------
楼主这个是在哪里看的。。。。
hrb2008 2007-03-15
  • 打赏
  • 举报
回复

SQLSERVER是会将NULL值存入索引树的,这和它的数据结构有关,通过NULL位图,它可以处理NULL值,而索引叶子节点中的数据存放结构和表数据行的结构是大同小异的,唯一索引中不可出现null
wangdehao 2007-03-15
  • 打赏
  • 举报
回复
sqlserver 的null值可以索引,
hrb2008 2007-03-15
  • 打赏
  • 举报
回复
NULL值不可以索引的.

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧