一.手动
1.利用analyze语句
analyze table table_name estimate statistics sample * percent;
analyze table table_name compute statistics ;
前者抽取*所代表的百分比来估算统计数据,而后者则是抽取整个表的信息,无疑后者比较精确,但是速度慢些
2.使用dbms_stats进行收集
按照7楼calvin兄的建议,应该优先考虑使用dbms_stats.
二.自动(10g以上)
1.利用AWR自动收集系统信息
2.利用gather_stats_job这个schedule来自动收集统计信息,但最好disable,以避免阻塞
补充下dbms_stats的语法
dbms_stats.gather_table_stats(ownname=>''.tabname=>'',estimate_percent=>'');
dbms_stats.gather_table_stats(ownname=>'',indname=>'',estimate_percent=>'');