前言: 本文是对这篇博客MySQL 8.0 Histograms的翻译,翻译如有不当的地方,敬请谅解,请尊重原创和翻译劳动成果,转载的时候请注明出处。谢谢!
英文原文地址:https://lefred.be/content/mysql-8-0-histograms/
翻译原文地址:https://www.cnblogs.com/kerrycode/p/11817026.html
在MySQL 8.0之前,MySQL缺失了其它关系数据库中一个众所周知的功能:优化器的直方图
优化器团队(Optimizer Team)在越来越多的MySQL DBA的呼声中实现了这个功能。
直方图定义
但什么是直方图呢?我们来看维基百科的定义吧,直方图是数值数据分布的准确表示。 对于RDBMS来说,直方图是特定列内数据分布的近似值。因此在MySQL中,直方图能够帮助优化器找到最有效的执行计划。
直方图例子
为了说明直方图是如何影响优化器工作的,我会用dbt3生成的数据来演示。
我们准备了一个简单查询:
SELECT * FROM orders
JOIN customer ON o_custkey = c_custkey
WHERE o_orderdate < '1993-01-01'
AND c_mktsegment = "AUTOMOBILE"\G