新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > 数据库 > Oracle教程 > 正文:Oracle的“Optimizer”及其相关的一些知识

Oracle的“Optimizer”及其相关的一些知识

新客网 XKER.COM 2008-01-28 来源:赛迪网 10331 收藏本文

 

 

 

4、为什么有时一个表的某个字段明明有索引,当观察一些语的执行计划确不走索引呢?如何解决呢?

 

A、不走索引大体有以下几个原因

◆你在Instance级别所用的是all_rows的方式

◆你的表的统计信息(最可能的原因)

◆你的表很小,上文提到过的,Oracle的优化器认为不值得走索引。

B、解决方法

◆可以修改init.ora中的OPTIMIZER_MODE这个参数,把它改为Rule或Choose,重起数据库。也可以使用4中所提的Hint.

◆删除统计信息

 

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;
共2页: 上一页 [1] [2] 下一页
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐