加载中...
直方图是查询优化器统计信息的一种,用于描述列中数据值的分布情况。通过把列值划分为若干桶并记录各桶的频率,优化器能更准确地估算过滤条件的选择率,尤其对数据分布倾斜的列至关重要。

| 类型 | 优化器统计信息 |
| 描述对象 | 列值分布 |
| 常见形式 | 等宽 / 等高 / 频率 |
| 主要用途 | 估算选择率 |
直方图(Histogram)是数据库优化器统计信息的一种形式,用于刻画某一列中数据值的分布。它将列的取值范围划分为多个区间(桶),记录每个桶内的数据量或频率,帮助优化器估算给定条件命中多少行,即选择率。
优化器在选择执行计划时,需要预估各操作会处理的行数。若只知道列的最大最小值和总行数,对于分布均匀的数据尚可,但当数据严重倾斜(如某个热门取值占比极高)时,均匀假设会导致估算严重失真,进而选错索引或连接方式。直方图通过刻画真实分布来纠正这一偏差。
直方图在数据分布倾斜的列上价值最大,例如状态字段中绝大多数为已完成、少量为异常,或地区字段中人口高度集中的取值。借助直方图,优化器能识别出稀有值查询应走索引、高频值查询应走全表扫描的差异,从而选出更优计划。
问:什么时候需要手动创建直方图?答:当某列分布明显倾斜且频繁出现在过滤条件中,而优化器默认未收集时,可手动为其建立直方图以改善估算。
问:直方图桶数越多越好吗?答:桶数越多描述越精细,但收集与存储开销也越大,应在准确度与维护成本之间平衡,通常取有限的桶数即可覆盖主要分布特征。

| 类型 | 优化器统计信息 |
| 描述对象 | 列值分布 |
| 常见形式 | 等宽 / 等高 / 频率 |
| 主要用途 | 估算选择率 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧