索引中不存储全部为空的键值,所以当查询某字段为空的时候,如果
(1)select * from table_name where a is null(有索引a,b)的时候,如果b有not null属性,那么查询是走索引 INDEX RANGE SCAN,如果没有not null属性 那么还是走全表扫描的
(2)create index idx_t on table_name(nvl(a,0)); --如果a有0值,则会造成不干净的数据,不推荐
create index idx_t on table_name(a,0); --也是函数索引,推荐
两种方法都能有效的避免统计null值不走索引的情况
可以根据实际情况选择,函数索引的方式占用空间也不会很大