analyze释义:
vt. 对...进行分析;对(某人)进行心理分析;鉴定和测量...的化学成分;[语法]解析(句子)(同analyse)
收集统计信息
在Oracle数据库里,通常有两种方法可以用来收集统计信息:一种是使用ANALYZE命令;另一种是使用DBMS_STATS包。表、索引、列的统计信息和数据字典统计信息用ANALYZE命令或者DBMS_STATS包收集均可,但系统统计信息和系统内部对象统计信息只能使用DBMS_STATS包来收集。
analyze table 表名 compute statisticsanalyze index 索引ID compute statistics如果想分析所有的表名和index名可以从视图user_tables,user_indexes取得相关的信息,自动生成SQL命令
分析命令(ANALYZE)向Oracle提供收集统计信息的能力,这些收集的统计信息然后被优化器使用。优化器必须使用最新的统计信息才能使你的SQL代码最高效地被执行。你必须确保你的关于表和索引的统计信息是最新的,因此你应该定期分析你的表。
尽管如此,在我们进一步讨论之前,你应该注意到你应该使用Oracle提供的DBMS_STATS软件包。你不应该使用分析命令(ANALYZE),因为它不能处理现在的表能利用的很多特色。因此,请记住使用DBMS_STATS包来分析你的表
全表还是全库啊?
全表的话,可以针对某个用户来分析:SQL> exec dbms_stats.gather_schema_stats(ownname=>'scott',options=>'gather auto',estimate_percent=>dbms_stats.auto_sample_size,degree=>6); 具体的参数可以根据实际情况修改,也可以加其他的参数进来全库的话,10g会自动分析的,但是也可以收到分析,统计分析要消耗大量资源,建议不要在业务繁忙时做:SQL> exec dbms_stats.gather_system_stats('start')
; 开始SQL> exec dbms_stats.gather_system_stats('stop')
; 结束SQL> exec dbms_stats.gather_system_stats('interval',interval=>N); 一直工作N分钟