索引分类
划分方式一
聚集索引: 指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同。一个表只能有一个聚集索引,因为一个表的物理顺序只有一种情况,所以,对应的聚集索引只能有一个。如果某索引不是聚集索引,则表中的行物理顺序与索引顺序不匹配,与非聚集索引相比,聚集索引有着更快的检索速度。因为聚集索引的叶子节点存储行记录,而非聚集索引叶子节点存储的是索引列 + 主键值,所以非聚集索引查询到对应的主键值,然后通过主键到聚集索引上查找对应记录的过程为回表
表中必须要有,且只有一个聚集索引:
(1)定义了PK,则PK就是聚集索引
(2)如果表没有定义PK,则第一个not NULL unique列是聚集索引
(3)否则,默认创建一个隐藏的row_id作为聚集索引
非聚集索引: 物理存储不按照索引排序;非聚集索引则就是普通索引了,仅仅只是对数据列创建相应的索引,不影响整个表的物理存储顺序。
划分方式二
普通索引:仅加速查询
唯一索引:加速查询 + 列值唯一(可以有null)
主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个
组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并。遵循最左前缀匹配原则,例(A,B,C) 等同于创建了 A 、(A,B)、(A,B,C)三个索引,如果要查询的字段刚好在ABC中,则可以利用该索引,不用回表,也是数据库优化的手段之一
全文索引:对文本的内容进行分词,进行搜索