一、什么是索引?
索引是一种特殊的文件,包含对数据表中所有记录的引用指针,可以对数据表中一列或多列创建索引,并且还可以指定索引的类型。通俗来说,索引相当于目录。
二、索引的作用
索引提高了查找的速度。
索引就相当于表的目录,类似书的目录一样便于查找。
三、索引的应用场景
应用场景:
- 数据量大,经常进行查询操作
- 很少使用增、删、改操作,增加索引会降低这些操作的效率
- 有足够的空间,添加索引需要一定的空间,是用空间来换时间
四、索引的简单操作
1、查看索引
show index from 表名;
2、创建索引
create index 索引名 on 表名(字段名);
3、删除索引
drop index 索引名 on 表名;
五、索引背后的数据结构
在索引中常用的数据结构是B+树,B+树是一个N叉搜索树,每一个结点上包含了多个key值,在非叶子结点上,m个key值就会分成m个空间,并且父结点的值最终都会在叶子结点中体现,父结点的值会作为子结点的最大(小)值,对于叶子结点使用链表进行顺序连接。
B+树适合做索引的原因:
- 整体的IO次数少,使用B+树在查找的时候,因为是多叉搜素树;
- 查询次数稳定,因为所有的查询最终都会落到叶子结点,每次查询的次数差不多;
- 非常适合范围查找,因为每个叶子结点上的key值是有序的,且叶子结点之间用链表进行连接;
- 非叶子结点整体占用的内存少,所有的数据存储都是存放到叶子结点上的,非叶子结点只保存key值,非叶子结点占用的内存少。