【MySql】mysql中的聚集索引和非聚集索引

    如果表中一条记录占用磁盘1000个字节的话,对其中一个10个字节的字段建立索引,那么该记录对应的索引快的大小只有10个字节。了解到数据库中最小的空间单元是页,一个页在磁盘上占用8k,那么这个页就可以记录8条字段记录,可以存储800条索引。如果我们要从8000条记录的表中检索符合某个条件记录的话,如果没有索引的话,需要遍历8000条*1000字节/8k=1000个页面。如果有索引的话,则查询8000条*10字节/8k=10个页面就可以了

    索引中的页和区

    SQL中存储数据的基础单位就是页,一个页的大小为8k,数据库可以将数据从逻辑上分成页,磁盘的io操作,就是在页级别执行。           

        【MySql】mysql中的聚集索引和非聚集索引

一个页一般就包括上述的几个部分,标头、数据行、可用空间。

        一个区包含8个页,它是管理空间的单位。

 

    聚集索引

    索引中的底层节点称为叶子节点,根节点与叶节点之间任何索引级别称为中间级。在聚集索引中,叶节点包含基础表的数据页。根节点和中间级节点包含有索引行和索引页。每个索引行包含一个键值和一个指针。该指针指向B-树上的某一中间级页或叶级索引中的某个数据行,每级索引中的页均被链接在双向连列表中。

【MySql】mysql中的聚集索引和非聚集索引


   非聚集索引

【MySql】mysql中的聚集索引和非聚集索引

聚集索引和非聚集索引的区别:

         聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。

         聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。