首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

oracle中null与索引问题?

2014-01-28 
oracle中null与索引问题?在表t有千万条数据。 表t的a列中的数据中:0.1%的值[b]是null[/b]。 假如在表t的a字段

oracle中null与索引问题?

在表t有千万条数据。
表t的a列中的数据中:0.1%的值[b]是null[/b]。
假如在表t的a字段上建了索引index_a,

问题:
1,索引index_a的叶子节点中包含null值吗?
2,'select * from t where a is null' 这条sql的话会用到索引index_a吗?
  假如这条sql用[b]不[/b]上索引index_a的 话,
这条sql执行速度和[b]没有索引index_a时[/b]是一样的吗?

------解决方法--------------------------------------------------------
is null 和is not null
不会用到索引
------解决方法--------------------------------------------------------


2 使用IS NULL 或IS NOT NULL

使用IS NULL 或IS NOT NULL同样会限制索引的使用。因为NULL值并没有被定义。在SQL语句中使用NULL会有很多的麻烦。因此建议开发人员在建表时,把需要索引的列设成NOT NULL。如果被索引的列在某些行中存在NULL值,就不会使用这个索引(除非索引是一个位图索引,关于位图索引在稍后在详细讨论)。


Oracle 限制索引
http://blog.csdn.net/tianlesoftware/archive/2009/10/15/4671674.aspx
------解决方法--------------------------------------------------------
1、B*Tree索引不存储null值,在索引字段允许为空的情况下,某些Oracle查询不会使用索引。
2、is null 和is not null不会用到索引。

        

热点排行