Oracle复合索引与空值的索引使用问题小结
昨天在QQ群里讨论一个SQL优化的问题,语句大致如下: select A,min(B) from table group by A;--A,B都没有not null约束,A列无空值,B列有空值。--存在复合索引IX_TEST(A,B) 于是手动测试,环境采用Oracle自带的scott用户下的emp表。 1.首先查看如下语句的执行计划(此时表只有主键索引): 2.添加IX_TEST(deptno,comm)后查看执行计划: 发现依然是全表扫描。 3.为deptno列添加非空约束后再次查看执行计划: 4.总结: Btree索引是不存储空值的,这个是所有使用Btree索引的数据库的共同