聚集索引和非聚集索引并不是一种单独的索引类型,而是一种数据存放方式。
要理解聚集索引和非聚集索引,可通过对比汉语字典的索引。汉语字典提供了两类检索汉字的方式:
-
第一类是拼音检索(前提是知道该汉字读音),比如:拼音为zheng的汉字一定排在拼音zhang的汉字后面,并且根据拼音就可以找到对应汉字的页码,这就是我们通常所说的字典序;
-
第二类是部首笔画检索,根据笔画先找到对应汉字,然后查到汉字对应的页码。
拼音检索就是聚集索引,因为存储的记录(数据库中是行数据、字典中是汉字的详情记录)是按照该索引排序的;笔画索引,虽然笔画相同的字在笔画索引中相邻,但是实际存储页码却不相邻。
聚集索引
聚集索引,就是将索引和数据放到一起,找到索引也就找到了数据。
聚集索引的数据的物理存放顺序与索引顺序是一致的,即:只要在索引是相邻的,那么对应的数据也一定是存放在相邻的磁盘上。因为无法同时把一个数据行存放在两个不同的地方,所以每个表只能有一个聚集索引。
优点:
- 数据访问更快。聚集索引将索引和数据保存在同一个B+Tree中,因此从聚集索引中获取数据通常要比非聚集索引中查找要快。
- 当需要取出一定范围内的数据时,用聚簇索引也比用非聚簇索引好。
缺点:
-
插入速度严重依赖于插入顺序,按照主键的顺序插入是最快的方式,否则会严重影响性能。因此,对