mysql聚集索引,非聚集索引,联合索引

mysql聚集索引,非聚集索引,联合索引

mysql索引是一个排好序的数据结构,mysql底层选用的是B+树结构,会自动将索引从左往右从小到大依次排好序,如下图:
在这里插入图片描述
看叶子节点,可以发现是从左到右从小到大排好序的结构。(注:如果使用的是字符串,它会根据ASCII码值比较大小)
mysql索引类别主要是更每张表选择的引擎有关,主要常用InnoDB、MyISAM引擎。

聚集索引

聚集索引就是使用的InnoDB引擎,在B+树叶子节点里面存储索引时会将这一整条数据的内容都会存在这里,这就是聚集索引;

非聚集索引

非聚集索引就是使用的MyISAM引擎,在B+树叶子节点里面存储索引时会将这一整条数据的地址存在这里,再根据查询出来的地址再磁盘上去寻找数据,这就是聚集索引;
聚集索引和非聚集索引其实从mysql安装的data文件下的存的表结构就能发现一些东西,如下图:
在这里插入图片描述
我们会发现使用InnoDB引擎建的表在我们的磁盘上有两个文件,一个.frm和.idb。.frm存储的是表结构,而.idb存储的是索引和数据;我们再看使用MyISAM建的表,在磁盘上有三个文件,.frm还是存储结构的,.MYI是存储索引的,.MYD是存储数据的。我们从这里也是能大概区分到聚集索引和非聚集索引的区别。

联合索引

最后一种联合索引其实就是将一张表的多个字段联合组成当索引。它在B+树结构中也是排好序的,排序规则是先比较第一个索引的大小排序,比不出来就用下一个索引,继续比较排序。


本文著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
来源地址:https://www.php.cn/faq/415854.html
© 版权声明:转载请附上原文链接!)

猜你喜欢

转载自blog.csdn.net/ZYLSKY111/article/details/107427864