Oracle中分析表的作用1.分析更新表的统计信息,,有可能导致执行计划改变..2.以的analyzetableabccomputestatistics;这条为例,生成的统计信息会存在于user_tables这个视图,查看一下select*fromuser_tableswheretable_name='ABC';观察一下NUM_ROWS,BLOCKS,AVG_SPACE,AVG_ROW_LEN几列你就会明白,这就是变化。分析完表之后,会发现DBA_tables视图中,以前很多列值是空的,现在开始有数据了。这些数据就是分析表得到的.3.怎么样分析表或索引命令行方式可以采用analyze命令如Analyzetabletablenamecomputestatistics;Analyzeindex|clusterindexnameestimatestatistics;ANALYZETABLEtablenameCOMPUTESTATISTICSFORTABLEFORALL[LOCAL]INDEXESFORALL[INDEXED]COLUMNS;ANALYZETABLEtablenameDELETESTATISTICSANALYZETABLEtablenameVALIDATEREFUPDATEANALYZETABLEtablenameVALIDATESTRUCTURE[CASCADE]|[INTOTableName]ANALYZETABLEtablenameLISTCHAINEDROWS[INTOTableName]等等。如果想分析整个用户或数据库,还可以采用工具包,可以并行分析Dbms_utility(8i以前的工具包)Dbms_stats(8i以后提供的工具包)如dbms_stats.gather_schema_stats(User,estimate_percent=>100,cascade=>TRUE);dbms_stats.gather_table_stats(User,TableName,degree=>4,cascade=>true);这是对命令与工具包的一些总结(1)、对于分区表,建议使用DBMS_STATS,而不是使用Analyze语句。a)可以并行进行,对多个用户,多个Tableb)可以得到整个分区表的数据和单个分区的数据。c)可以在不同级别上ComputeStatistics:单个分区,子分区,全表,所有分区d)可以倒出统计信息e)可以用户自动收集统计信息(2)、DBMS_STATS的缺点a)不能ValidateStructureb)不能收集CHAINEDROWS,不能收集CLUSTERTABLE的信息,这两个仍旧需要使用Analyze语句。c)DBMS_STATS默认不对索引进行Analyze,因为默认Cascade是False,需要手工指定为True(3)、对于Oracle9里面的ExternalTable,Analyze不能使用,只能使用DBMS_STATS来收集信息.