从文件存储的角度进行划分
聚簇索引: 将数据存储与索引放到了一块,找到索引也就找到了数据非聚簇索引:将数据与索引进行分开存储二级索引(存储索引) innoDB所独有的方式
1.聚簇索引的叶子节点存储了一行完整的数据,而二级索引则存储对应的主键值,相比于聚簇索引,占用的空间要少2.当我们需要为表建立多个索引时,如果都是聚簇索引,那将占用大量内存空间,所以InnoDB中主键所建立的是聚簇索引(主键索引),而唯一索引、普通索引、前缀索引等都是二级索引3.若对Name列进行条件搜索(建立二级索引),则需要两个步骤∶(回表)(1)在辅助索引B+树中检索Name,到达其叶子节点获取对应的主键
(2)使用找到的主键,在主索引B+树种再执行一次B+树检索操作,最终到达叶子节点即可获取整行数据
只有InnoDB能建立二级索引
主键和行数据是一起被载入内存的,找打叶子节点就可以立刻将行数据返回了表假如使用UUID作为主键,会使得数据存储稀疏,这就会出现聚簇索引有可能有比全表扫描更慢,因为UUID是随机的。效率会比较低一些,因为只是拿到了地址,只有地址的话还需要读取一次磁盘,从磁盘中去读取数据。
