mysql 8.0版本 直方图

MySQL直方图(Histogram)是MySQL 8.0引入的一种列统计信息,用于描述表中某列数据的分布情况。

它的核心作用是帮助查询优化器(Optimizer)在缺乏索引时,也能做出更准确的执行计划,从而提升查询性能。

 

为什么需要直方图

在没有直方图之前,如果查询条件中的列没有索引,优化器只能“猜测”数据分布,这常常导致选择低效的执行计划,比如全表扫描。

直方图提供了数据分布的精确“画像”,让优化器能更准确地估算查询会返回多少行数据(即行数估算/cardinality estimates),进而选择更优的查询路径。

 

如何使用直方图

  1. 查询条件列没有索引:这是直方图最典型的应用场景。
  2. 数据分布不均匀(数据倾斜):例如,90%的订单是“已完成”状态,只有10%是“待付款”。直方图能让优化器明白这一点,为查询“待付款”订单选择更优计划。
  3. 作为索引的低成本替代方案:创建和维护索引代价较高(影响写入性能),而直方图只是一份统计信息,对DML(数据增删改)操作无影响,可按需手动更新。

 

posted @ 2023-06-23 10:02  方达达  阅读(4)  评论(0)    收藏  举报