ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORACLE -> NULL & INDEXES

ORACLE -> NULL & INDEXES

原创 Linux操作系统 作者:ljm0211 时间:2012-06-20 14:24:57 0 删除 编辑
SQL> create table nulltest(c1 varchar2(10),c2 varchar2(10), n1 number);
表已创建。
SQL> create unique index uidx_nulltest_01 on nulltest(c1,c2);
索引已创建。
SQL> insert into nulltest values('a','b',2);
已创建 1 行。
SQL> insert into nulltest values('a',null,3);
已创建 1 行。
SQL> insert into nulltest values(null,'b',4);
已创建 1 行。
SQL> insert into nulltest values(null,null,5);
已创建 1 行。
SQL> insert into nulltest values(null,null,6);
已创建 1 行。
SQL> insert into nulltest values(null,null,7);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select c1,c2,count(*),sum(n1) from nulltest group by c1,c2;
C1         C2           COUNT(*)    SUM(N1)
---------- ---------- ---------- ----------
                                   3         18
              b                   1          4
a           b                    1          2
a                                 1          3
在考虑唯一性时,(NULL,NULL)与(NULL,NULL)并不相同。对于聚集来说,(NULL,NULL)与(NULL,NULL)则认为是相同的。
SQL> analyze index uidx_nulltest_01 validate structure;
索引已分析
SQL> select name,lf_rows from index_stats;
NAME                              LF_ROWS
------------------------------ ----------
UIDX_NULLTEST_01                        3
索引里只有三个leaf,对于全部为NULL的key,索引并不存储。所以对于 SELECT * FROM nulltest WHERE c1 IS NULL 或SELECT * FROM nulltest WHERE c1 IS NULL AND c2 IS NULL。
虽然c1,c2有建UNIQUE KEY,但是对于这种查询,并不会用到索引。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11411056/viewspace-733377/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-05-14

  • 博文量
    272
  • 访问量
    441997