一.索引的定义
通俗来说,索引就像一本书的目录,根据目录可以快速定位要找到的内容所在页码,MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的一种数据结构,而且是排好序的数据结构,索引存储在磁盘文件中。
二.索引的分类
MySQL索引主要是有两种结构:B+Tree索引和Hash索引,平时我们常说的,如果没有特别说明的话,一般都是指B+Tree结构的索引。索引都能极大的减少存储引擎需要扫描的数据量,从而提高数据的检索速度。
1.Hash索引
Hash索引的结构和HashMap相类似,键值 key 通过 Hash 映射找到桶 bucket。在这里桶(bucket)指的是一个能存储一条或多条记录的存储单位。一个桶的结构包含了一个内存指针数组,桶中的每行数据都会指向下一行,形成链表结构,当遇到 Hash 冲突时,会在桶中进行键值的查找。
2.B+Tree索引
B+树是B-树的变体,也是一种多路搜索树。
- 所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的;
- 不可能在非叶子结点命中;
- 非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层;
- 每一个叶子节点都包含指向下一个叶子节点的指针,从而方便叶子节点的范围遍历。
- 更适合文件索引系统;
三.索引类型
1.Normal 普通索引
表示普通索引,大多数情况下都可以使用
2.Unique 唯一索引
表示唯一的,不允许重复的索引,如果该字段信息不能重复,例如注册手机号用作索引时,可设置为unique;
Primary Key是拥有自动定义的Unique约束;
3.Full Text 全文索引
表示全文索引,在索引长文本的时候效果较好,比如搜索一遍文章,在比较短的文本建议使用普通的Index即可;
4.SPATIAL 空间索引
空间索引是对地理空间位置数据类型的字段建立索引,MYSQL中的地理空间位置数据类型有4种,分别是GEOMETR、POINT、LINESTRING、POLYGON;
四.Navicat添加索引
1.找到需要添加索引的表,右键单击,选择设计表。
2.进入索引选项页面
3.根据需求添加索引,填写索引命名、选择相对应的字段、索引类型、索引方法以及添加注释
五.索引命名规范
非唯一索引名idx_xxx,唯一索引名 uniqx_xxx;