mysql 8.0版本 直方图
MySQL直方图(Histogram)是MySQL 8.0引入的一种列统计信息,用于描述表中某列数据的分布情况。
它的核心作用是帮助查询优化器(Optimizer)在缺乏索引时,也能做出更准确的执行计划,从而提升查询性能。
为什么需要直方图
在没有直方图之前,如果查询条件中的列没有索引,优化器只能“猜测”数据分布,这常常导致选择低效的执行计划,比如全表扫描。
直方图提供了数据分布的精确“画像”,让优化器能更准确地估算查询会返回多少行数据(即行数估算/cardinality estimates),进而选择更优的查询路径。
如何使用直方图
- 查询条件列没有索引:这是直方图最典型的应用场景。
- 数据分布不均匀(数据倾斜):例如,90%的订单是“已完成”状态,只有10%是“待付款”。直方图能让优化器明白这一点,为查询“待付款”订单选择更优计划。
- 作为索引的低成本替代方案:创建和维护索引代价较高(影响写入性能),而直方图只是一份统计信息,对DML(数据增删改)操作无影响,可按需手动更新。

浙公网安备 33010602011771号