1. 有什么样的方法来判断一个数据库库表是否需要来做统计更新呢?
2. 如何来检测统计更新的效果?
3.统计更新的方法是什么:analyze table 表名 compute statistics;
还是:EXEC dbms_stats.gather_table_stats('用户名',‘表名’),这两种方法有区别吗?
如何检测两者的效果
2. 如何来检测统计更新的效果?
3.统计更新的方法是什么:analyze table 表名 compute statistics;
还是:EXEC dbms_stats.gather_table_stats('用户名',‘表名’),这两种方法有区别吗?
如何检测两者的效果
2,可以看下all_tables下面的数据量和实际的数据量是否有差距。当然还有别的方式,待大神回复
3,更新的方式这两者没什么差距,只是一个是老版本一个是新版本的,机制应该差不多。
2、更新的效果指的是什么?是是否更新?还是更新是否正确?不同的统计信息存放在不同的数据字典里,包括user_tables、user_tab_partitions、user_tab_subpartitions、user_indexes、user_tab_col_statistics等等,对于表,最简单暴力看它统计信息是否在最近被更新,可以查看user_tables.last_analyzed字段,这个代表最近一次收集统计信息的时间;
3、建议使用dbms包来收集统计信息,因为至少可以并行,对于分区表的统计信息收集也更准确(可以指定更细粒度的分区层级)