MySQL索引

Source

目录

一、什么是索引?

二、索引的作用 

三、索引的应用场景 

四、索引的简单操作 

1、查看索引

2、创建索引 

3、删除索引 

五、索引背后的数据结构 


一、什么是索引?

索引是一种特殊的文件,包含对数据表中所有记录的引用指针,可以对数据表中一列或多列创建索引,并且还可以指定索引的类型。通俗来说,索引相当于目录。

二、索引的作用 

索引提高了查找的速度。

索引就相当于表的目录,类似书的目录一样便于查找。

三、索引的应用场景 

应用场景:

  • 数据量大,经常进行查询操作
  • 很少使用增、删、改操作,增加索引会降低这些操作的效率
  • 有足够的空间,添加索引需要一定的空间,是用空间来换时间

四、索引的简单操作 

1、查看索引

show index from 表名;

2、创建索引 

create index 索引名 on 表名(字段名); 

3、删除索引 

drop index 索引名 on 表名; 

五、索引背后的数据结构 

在索引中常用的数据结构是B+树,B+树是一个N叉搜索树,每一个结点上包含了多个key值,在非叶子结点上,m个key值就会分成m个空间,并且父结点的值最终都会在叶子结点中体现,父结点的值会作为子结点的最大(小)值,对于叶子结点使用链表进行顺序连接。

B+树适合做索引的原因:

  • 整体的IO次数少,使用B+树在查找的时候,因为是多叉搜素树;
  • 查询次数稳定,因为所有的查询最终都会落到叶子结点,每次查询的次数差不多;
  • 非常适合范围查找,因为每个叶子结点上的key值是有序的,且叶子结点之间用链表进行连接;
  • 非叶子结点整体占用的内存少,所有的数据存储都是存放到叶子结点上的,非叶子结点只保存key值,非叶子结点占用的内存少。