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

稍微复杂点的索引:

MySQL中的索引:

右侧是数据表,一共有两列七条记录,最左边的是数据记录的物理地址。
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;