兴趣小组主题分析-mysql 索引 讲课纲要
2018-08-11 本文已影响0人
无敌TG
场景:在项目中,因为兴趣所以私下组织了一个技术分享会,每周推荐一个成员分享一个主题,本周是主题分享的第二次沙龙,我负责当主讲人,下面是我的主题提纲 :
一.mysql简介
1.1历史
mysql公司-sun公司(5.0版本)-oracle公司(5.5)(收购了sun,innodb公司))
1.2mysql 逻辑架构
![](https://img.haomeiwen.com/i9355517/bce4ac6efd67fe77.png)
二.索引类型(B-Tree 索引 和hash 索引)
2.1b-tree
取代全表扫描,从索引根节点进行搜索
![](https://img.haomeiwen.com/i9355517/767420129903b05f.png)
优势:
-
全值匹配
-
匹配最左前缀
-
匹配列前前缀
-
匹配范围值
-
只访问索引查询
![](https://img.haomeiwen.com/i9355517/7c4e2822dcd0e84f.png)
2.2hash 索引(innodb 引擎 有自适应哈希索引)
用于精确匹配索引所有的查询才有效率。对于每行数据,存储引擎都会对所有的索引列计算一个哈希码,要维护一张hash表,存储 每行数据行的指针。(hash索引基本是隐式,需要开启)
限制使用:
-
索引表包含哈希值和行指针
-
不是按照索引值顺序存储的,无法用于排序
-
不支持部分索引列匹配查找,只支持等值比较查询如 =,in
三.高性能的索引策略
3.1 独立的列
![](https://img.haomeiwen.com/i9355517/837707b60435af00.png)
![](https://img.haomeiwen.com/i9355517/3f8e87bec65840c6.png)
![](https://img.haomeiwen.com/i9355517/407a00130c67e69a.png)
(案例3:索引合并)
![](https://img.haomeiwen.com/i9355517/7b28dfd6184348cd.png)
3.2选择合适的索引列顺序
![](https://img.haomeiwen.com/i9355517/f1d4356b4599d9ad.png)
3.3聚[蔟](cù)索引
四.总结
![](https://img.haomeiwen.com/i9355517/fe798585ba3d654e.png)