概述
analyze table 一般可以指定分析: 表,所有字段,所有索引字段,所有索引。 若不指定则全部都分析。
SQL> analyze table my_table compute statistics; SQL> analyze table my_table compute statistics for table for all indexes for all columns; SQL> analyze table my_table compute statistics for table for all indexes for all indexed columns; 其中:
SQL> analyze table my_table compute statistics; 等价于:SQL> analyze table my_table compute statistics for table for all indexes for all columns; 通过在analyze table命令中指定了for table或者不指定任何参数的时候,oracle数据库会给我们统计基于表的统计信息,如果我们想让CBO利用合理利用数据的统计信息的时候就可以用这个方式了。
生成分析某个用户的所有表
set pagesize 0spool /home/oracle/analyze_tables.sql;select 'analyze table '||owner||'.'||table_name||' compute statistics;' from dba_tables where owner='XXXXX';spool off
生成分析某个用户的所有索引
spool /home/oracle/analyze_indexes.sql;select 'analyze index '||owner||'.'||index_name||' compute statistics;' from dba_indexes where owner='XXXX';spool off@/home/oracle/analyze_tables.sql@/home/oracle/analyze_indexes.sql


上面的语句生成了两个sql文件,分别分析NWPP用户全部的表和索引。如果需要按照百分比来分析表,可以修改一下脚本。通过上面的步骤,我们就完成了对表和索引的分析,
修改后就可以测试一下速度的改进啦。建议定期运行上面的语句,尤其是数据经过大量更新。当然,也可以通过dbms_stats来分析表和索引。
后面会分享更多DBA方面的内容,感兴趣的朋友可以关注下!!

本文介绍如何使用Oracle的analyzetable命令进行表和索引的统计信息分析,包括指定不同参数来调整分析范围的方法,以及如何生成分析脚本。特别强调了在数据大量更新后定期运行这些命令的重要性。

2万+

被折叠的 条评论
为什么被折叠?



