4、为什么有时一个表的某个字段明明有索引,当观察一些语的执行计划确不走索引呢?如何解决呢?
A、不走索引大体有以下几个原因
◆你在Instance级别所用的是all_rows的方式
◆你的表的统计信息(最可能的原因)
◆你的表很小,上文提到过的,Oracle的优化器认为不值得走索引。
B、解决方法
◆可以修改init
◆删除统计信息
SQL>analyze table table_name delete statistics; |
◆表小不走索引是对的,不用调的。
5、其它相关
A、如何看一个表或索引是否是统计信息
SQL>SELECT * FROM user_tables 2 WHERE table_name=<table_name> 3 AND num_rows is not null; SQL>SELECT * FROM user_indexes 2 WHERE table_name=<table_name> 3 AND num_rows is not null; |
b、假如我们先用CBO的方式,我们应及时去更新表和索引的统计信息,以免生成不切合实的执行计划。
SQL> ANALYZE TABLE table_name COMPUTE STATISTICS; SQL> ANALYZE INDEX index_name ESTIMATE STATISTICS; |
最新相关文章
发表评论