索引

索引(Index):是帮助MySQL高效获取数据的数据结构,可以得到索引的本质是数据结构。

最简单的索引:

![image-20201230080834466](2020-12-30 01-索引.assets/image-20201230080834466.png)

稍微复杂点的索引:

![image-20201230080908060](2020-12-30 01-索引.assets/image-20201230080908060.png)

MySQL中的索引:

![image-20201230080957938](2020-12-30 01-索引.assets/image-20201230080957938.png)

右侧是数据表,一共有两列七条记录,最左边的是数据记录的物理地址。

MySQL默认存储引擎InnoDB只显式支持B-Tree(从技术上来说是B+Tree)索引。

索引分类:

  • 普通索引:即一个索引只包含单个列,一个表可以有多个单列索引;
  • 唯一索引:索引列的值必须唯一,但允许有空值(主键索引也必须唯一,但不允许有空值);
    复合索引:即一个索引包含多个列;
  • 聚簇索引(聚集索引):并不是一种单独的索引类型,而是一种数据存储方式。具体细节取决于不同的实现,InnoDB的聚簇索引其实就是在同一个结构中保存了B-Tree索引(技术上来说是B+Tree)和数据行;
  • 非聚簇索引(非聚集索引):不是聚簇索引,就是非聚簇索引。

索引基础语法:

查看索引:
  • show index from table_name\G;
创建索引:
  • create [unique] index index_name on table_name(columnname(length));
  • alter table table_name add [unique] index [index_name] on (columnname(length));
删除索引
  • drop index [index_name] on table_name;