oracle null 不走索引,搜索条件设置为Is Null一定不走索引吗?

声明:本文思路来源于laoxiong老师的博文,就此感谢!

在Oralce的搜索中,如果where条件句后使用了is null搜索条件,那么即使该列上使用了索引,Oracle也不会进行索引搜索。那么,这条规则一定正确吗?

构建实验环境

准备数据环境,构建数据表。

SQL> create table t as select object_id,object_name,owner from dba_objects;

Table created

//设置一些object_id为null的情况

SQL> update t set object_id=null where wner='PERFSTAT';

139 rows updated

SQL> commit;

Commit complete

SQL> select count(*) from t;

COUNT(*)

----------

52806

//构建单值索引

SQL> create index idx_t_id on t(object_id);

Index created

//收集统计信息

SQL> exec dbms_stats.gather_table_stats(user,'T',cascade => true,method_opt => 'for all indexed columns');

PL/SQL procedure successfully completed

SQL> select * from d

你可能感兴趣的:(oracle,null,不走索引)