runstats工具可用来获取所处理表的统计信息,以及使用DISTRIBUTION参数来获取所处理表以及索引的数据分布(频率采样、百分比采样),使得系统在执行查询的时候,优化器根据runstats获取的信息,判定各访问途径(比如说三个表需要关联时,不同的先后关联顺序代表了不同的访问途径)需要消耗的资源,选择一个消耗资源最少的途径来进行查询。
runstats只能在单表上运行,其获取的统计信息包括:
- 表和索引的基本统计信息
- Where 和 order by语句中常用列的统计信息
- 数据偏斜列的频率值统计信息
- 所有关联列的关联统计信息
- 存在区间偏斜和区间谓词(> >= <= < between like)的列的直方图统计信息
使用方法:
RUNSTATS ON TABLE 模式.表名 [ON ALL COLUMNS] WITH DISTRIBUTION AND [SAMPLED] DETAILED INDEXES ALL
注意:
- []中的参数为可选参数
- 一般表和索引的统计信息需要同时收集,防止表和索引统计信息不一致的情况。
什么时候需要用runstats:
- 加载一个表时
- 创建一个索引时
- 重新组织一个表空间时
- 表空间中有大量更新删除插入时
- 将表空间恢复到之前某个时间节点后