有关统计信息收集方法问题!

[复制链接]
查看11 | 回复5 | 2005-12-6 10:08:14 | 显示全部楼层 |阅读模式
以前都是用ANALYZE的自编SQL来收集统计信息,以保证CBO选择相对正确的执行计划.
按Oracle 公司建议:应该使用DBMS_STATS 包来代替ANALYZE 语句收集统计信息。
可是经测试,不论用dbms_stats.gather_schema_stats还是dbms_stats.GATHER_DATABASE_STATS都不分析用户索引,难道分析索引只能用DBMS_STATS.GATHER_INDEX_STATS??
那位朋友一直用dbms_stats收集统计信息,说说你一般怎么做?
谢谢!
回复

使用道具 举报

千问 | 2005-12-6 10:08:14 | 显示全部楼层
DBMS_UTILITY看看
回复

使用道具 举报

千问 | 2005-12-6 10:08:14 | 显示全部楼层
最初由 monkeyai 发布
[B]DBMS_UTILITY看看 [/B]

DBMS_UTILITY是可以分析索引,但有个问题是它连全局临时表也分析!而dbms_stats不分析全局临时表!
以前在生产中,自己写SQL analyze table时,不小心分析了全局临时表曾引发执行计划改变而出现性能问题.
回复

使用道具 举报

千问 | 2005-12-6 10:08:14 | 显示全部楼层
那就自己spool脚本吧。。。
回复

使用道具 举报

千问 | 2005-12-6 10:08:14 | 显示全部楼层
最初由 zhxx_ora 发布
[B]以前都是用ANALYZE的自编SQL来收集统计信息,以保证CBO选择相对正确的执行计划.
按Oracle 公司建议:应该使用DBMS_STATS 包来代替ANALYZE 语句收集统计信息。
可是经测试,不论用dbms_stats.gather_schema_stats还是dbms_stats.GATHER_DATABASE_STATS都不分析用户索引,难道分析索引只能用DBMS_STATS.GATHER_INDEX_STATS??
那位朋友一直用dbms_stats收集统计信息,说说你一般怎么做?
谢谢! [/B]

dbms_stats.gather_schema_stats(ownname=>'LIS',method_opt=>'FOR ALL INDEXED COLUMNS',cascade=>true);
cascade这个参数设置为true就可以收集索引的统计信息了
回复

使用道具 举报

千问 | 2005-12-6 10:08:14 | 显示全部楼层
试了一下,的确如此,明白了!
谢谢 DBAORACLE!
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行