聚集索引与非聚集索引理解

Mysql数据库索引按照物理实现方式分类,索引可以分为 2 种:聚集索引和非聚集索引。

通常也把非聚集索引称为二级索引或者辅助索引。
聚集索引可以按照主键来排序存储数据,这样在查找行的时候非常有效。
举个例子,如果是一本新华字典,我们想要查找“好”这个字,直接在书中找汉语拼音的位置即可,也就是拼音“hao”。这样找到了索引的位置,在它后面就是我们想要找的数据行。
非聚集索引不会把索引指向的内容像聚集索引一样直接放到索引的后面,而是维护单独的索引表(只维护索引,不维护索引指向的数据),为数据检索提供方便
我们还以新华字典为例,如果想要查找“好”字,那么按照部首查找的方式,先找到“好”字的偏旁部首,然后这个目录会告诉我们“好”字存放到那一章节第多少页,我们再去指定的页码找这个字。
也就是说系统会进行两次查找,第一次先找到索引,第二次找到索引对应的位置取出数据行。

聚集索引和非聚集索引二者的区别

聚集索引与非聚集索引的原理不同,在使用上也有一些区别:

  1. 聚集索引的叶子节点存储的就是具体的数据记录,非聚集索引的叶子节点存储的是数据位置。非聚集索引不会影响数据表的物理存储顺序。
  2. 一个表只能有一个聚集索引,因为只能有一种排序存储的方式,但可以有多个非聚集索引,也就是多个索引目录提供数据检索。
  3. 使用聚集索引的时候,数据的查询效率高,但如果对数据进行插入,删除,更新等操作,效率会比非聚集索引低。

你可能感兴趣的:(聚集索引与非聚集索引理解)