3.MySQL索引原理与使用原则

2021-02-23  本文已影响0人  农民工进城

本章要点

1.索引原理
2.索引类型
3.使用原则
4.有关索引的几个概念

1. 索引原理

索引的出现其实就是为了提高数据查询的效率,就像书的目录一样;是一种排好序的数据结构。
本质就是:通过不断地缩小想要获取数据的范围来筛选出结果,同时把随机的事件变成顺序的事件。

1.1 索引的常见模型

常见的索引模型数据结构:哈希表、有序数组和搜索树。

哈希表这种结构适用于只有等值查询的场景,比如 Memcached 及其他一些 NoSQL 引擎

有序数组索引只适用于静态存储引擎

总结:

使用B+树而不是二叉树的原因
使用B+树而不是B树的原因
使用B+树而不是平衡二叉树或红黑树的原因

所以MySQL选择了B+Tree

对于InnoDB的哈希索引,确切的应该这么说:

2. 索引类型

索引分类

3. 使用原则

3.1 创建原则

区分度公式:
count(distinct(column_name)) / count(*) -- 列的全部不同值个数/所有数据行行

3.2 联合索引的最左匹配原则

当B+Tree的数据项是复合的数据结构,比如(name,age,sex)的时候。

4.有关索引的几个概念

以联合索引(name, age)为例。如果现在有一个需求:检索出表中“名字第一个字是张,而且年龄是 10 岁的所有男孩”。

select * from tuser where name like '张%' and age=10 and ismale=1;

5.6版本以前,只是进行匹配查询:


image.png

5.6版本以后,索引下推:


image.png
上一篇下一篇

猜你喜欢

热点阅读