聚集索引和非聚集索引

一.为什么使用索引?

如果没有索引,查询数据的时候只能一行行扫描,效率很差。
mysql分为聚集索引和非聚集索引,简单来讲:
聚集索引是将每个字段建立同样结构的索引,并且都去一个固定的文件查找数据
非聚集索引是以主键的B+树存储数据,其他字段根据索引查找到主键再去主键树查找数据。

(1)非聚集索引

查询
1.先查询有没有建立索引,如果有建立索引的话:
2.就会到MYISAM文件中定位到地址
3.然后去MYD文件中根据地址获取数据
注:比如以id建立的索引和以name建立的索引,B+tree上存储的都是MYD文件中对应的地址,如果是同一条数据的话,这个地址是一致的。
聚集索引和非聚集索引_第1张图片

(2)聚集索引

InnoDB存储引擎下的索引:
如图存储的是主键-数据的形式聚集索引和非聚集索引_第2张图片
使用 的是B+ tree结构,
1.建立主键索引:如果没有主键的话,会选择不重复的列建立索引,如果没有不重复列,默认生成主键来建立索引。
2.通过主键查询:直接通过主键的B+树查询数据。
3.通过其他查询字段的索引查询:叶子节点存储的是主键,先查询主键,再去主键的树查询数据。
聚集索引和非聚集索引_第3张图片

你可能感兴趣的:(数据库索引)