Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

351

积分

0

好友

8

主题
1#
发表于 2012-5-4 12:04:14 | 查看: 2892| 回复: 1
情况是这样的,数据库有一个索引包含了很多列:
CREATE INDEX COMPANY.DEAL_INFO_COMIDX01 ON COMPANY.DEAL_INFO
(FINI_FLAG, STEP_TYPE, DEL_FLAG, DEAL_MAN, PERI_MAN,
DEAL_TERM, READ_FLAG, REGI_FLAG, FSUB_FLAG, FLOW_INID,
STEP_INDEX, STEP_INCO, FINI_DATE, RECE_DATE)
LOGGING
TABLESPACE COMPANY01;

索引包含大量列会造成不必要的开销,比如造成块分裂和多余的io,有没有办法查出哪些列是多余的,想把索引修剪一下。
2#
发表于 2012-5-4 13:55:57
关键词 col_usage$

最早在9i中引入了col_usage$字典基表,其目的在于监控column在SQL语句作为predicate的情况,col_usage$的出现完善了CBO中柱状图自动收集的机制。

create table col_usage$
(
  obj#              number,                                 /* object number */
  intcol#           number,                        /* internal column number */
  equality_preds    number,                           /* equality predicates */
  equijoin_preds    number,                           /* equijoin predicates */
  nonequijoin_preds number,                        /* nonequijoin predicates */
  range_preds       number,                              /* range predicates */
  like_preds        number,                         /* (not) like predicates */
  null_preds        number,                         /* (not) null predicates */
  timestamp         date      /* timestamp of last time this row was changed */
)
  storage (initial 200K next 100k maxextents unlimited pctincrease 0)
/
create unique index i_col_usage$ on col_usage$(obj#,intcol#)
  storage (maxextents unlimited)
/


可以监控 发现 col_usage$ 哪些列在SQL语句中充当 谓词 而哪些列没有 ,对于从来不用作 条件condition 的column可以考虑不要在该 column上创建索引

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-15 15:37 , Processed in 0.052468 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569