加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL 8.0新特征之统计直方图

发布时间:2018-09-21 06:09:52 所属栏目:编程 来源:韩杰·沃趣科技
导读:【新品产上线啦】51CTO播客,随时随地,碎片化进修 概览 MySQL8.0实现了统计直方图。操作直方图,用户可以对一张表的一列做数据漫衍的统计,出格是针对没有索引的字段。这可以辅佐查询优化器找到更优的执行打算。统计直方图的首要行使场景是用来计较字段选

假如想要知道更多关于直方图统计的细节,可以行使trace:

  1. mysql> SET OPTIMIZER_TRACE = "enabled=on";  
  2. Query OK, 0 rows affected (0.00 sec)  
  3. mysql> SET OPTIMIZER_TRACE_MAX_MEM_SIZE = 1000000;  
  4. Query OK, 0 rows affected (0.00 sec)  
  5. mysql> EXPLAIN SELECT * FROM customer WHERE c_birth_day <= 20 AND c_birth_year = 1967;  
  6. mysql> SELECT JSON_EXTRACT(TRACE, "$**.filtering_effect") FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;  
  7. +----------------------------------------------------------------------------------------+  
  8. | JSON_EXTRACT(TRACE, "$**.filtering_effect")                                            |  
  9. +----------------------------------------------------------------------------------------+  
  10. | [[{"condition": "(`customer`.`c_birth_day` <= 20)", "histogram_selectivity": 0.6376}]] |  
  11. +----------------------------------------------------------------------------------------+  
  12. 1 row in set (0.00 sec) 

这里用了JSON_EXTRACT从trace里取出相干的部门。对付每个前提,直方图被行使的话,就会看到估算过的字段的选择性。在这个例子里,通过直方图,对“c_birth_day <= 20”前提,估算出63.76%的数据满意前提。究竟上,与现实的数据漫衍环境根基同等:

  1. mysql> SELECT  
  2. ->   (SELECT count(*) FROM customer WHERE c_birth_day <= 20)  
  3. ->   /  
  4. ->   (SELECT COUNT(*) FROM customer) AS ratio;  
  5. +--------+  
  6. | ratio  |  
  7. +--------+  
  8. | 0.6376 |  
  9. +--------+  
  10. 1 row in set (0.03 sec) 

【编辑保举】

  1. MySQL不为人知的主键与独一索引束缚
  2. 数据库ndf文件巨细变为0KB怎样举办数据规复?
  3. 带你相识MySQL数据库小能力
  4. 史上最全的MySQL高机能优化拭魅战总结!
  5. 数据库为什么会分为“行式存储”和“列式存储”呢?
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读