聚簇索引和非聚簇索引有什么区别?
总览
聚簇索引与非聚簇索引是从文件存储的角度进行划分:
- 聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据(InnoDB)
- 非聚簇索引:将数据和索引进行分开存储(MyISAM)
一、聚簇索引
-
一个表仅有一个聚簇索引,默认是主键
-
聚簇索引性能最好而且具有唯一性,所以非常珍贵,必须慎重设置。一般要根据这个表最常用的SQL查询方式来进行选择,某个字段作为聚簇索引,或组合聚簇索引,这个要看实际情况。
二级索引(辅助索引) -
聚簇索引的叶子节点存储了一行完整的数据,而二级索引则存储对应的主键值,相比于聚簇索引,占用的空间要少
-
当我们需要为表建立多个索引时,如果是聚簇索引,那件占用大量的内存空间,索引InnoDB中主键所建立的是聚簇索引,而唯一索引、普通索引、前缀索引等都是二级索引