oracle 分区表收集统计信息
时间: 2023-07-04 07:27:42 浏览: 182
oracle 查询从分表取数据
3星 · 编辑精心推荐
针对Oracle分区表的收集统计信息可以通过以下步骤完成:
1. 确定需要收集统计信息的分区表。
2. 使用DBMS_STATS包中的GATHER_TABLE_STATS过程收集表的统计信息。例如:
```
EXEC DBMS_STATS.GATHER_TABLE_STATS(ownname=>'schema_name',tabname=>'table_name',partname=>'partition_name',cascade=>TRUE,estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE);
```
其中,ownname代表分区表所在的schema名称,tabname代表分区表名称,partname代表分区名称,cascade参数指定收集分区表的所有分区的统计信息,estimate_percent参数指定使用自动样本大小。
3. 对于大型分区表,可以考虑使用INCREMENTAL方法收集统计信息,以便节省收集统计信息的时间和资源。例如:
```
EXEC DBMS_STATS.GATHER_TABLE_STATS(ownname=>'schema_name',tabname=>'table_name',partname=>'partition_name',cascade=>TRUE,estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE,method_opt=>'FOR ALL COLUMNS SIZE AUTO INCREMENTAL ON PARTITION(partition_name)');
```
其中,method_opt参数指定了使用INCREMENTAL方法收集统计信息,并且只对指定的分区进行增量收集。
4. 在收集完分区表的统计信息后,可以使用DBMS_STATS.PURGE_TABLE_STATS过程清除过期的统计信息。例如:
```
EXEC DBMS_STATS.PURGE_TABLE_STATS(ownname=>'schema_name',tabname=>'table_name',partname=>'partition_name',cascade=>TRUE);
```
其中,cascade参数指定清除分区表的所有分区的统计信息。
以上就是收集Oracle分区表统计信息的基本步骤。需要注意的是,统计信息的收集频率应该根据分区表数据的变化情况来确定,以便保证查询优化器的准确性和性能。
阅读全文