聊聊面试必问的索引

举报
周杰伦本人 发表于 2022/07/27 14:24:07 2022/07/27
【摘要】 聊聊面试必问的索引 索引 聚簇索引与非聚簇索引 索引的修改 哈希索引与B+树索引 总结 聊聊面试必问的索引索引是面试中经常会问到的指点,索引到底是什么呢? 索引索引其实就是让无序的数据变得有序,具体来讲就是先把创建了索引的数据库的列的内容进行排序,然后生成倒排的表,这个倒排表中保存着对应数据的链接地址,这样查询的时候,我们先从这个倒排表中查询,然后再根据倒排表的内容找到对应的具体数据。 聚...

聊聊面试必问的索引

索引是面试中经常会问到的指点,索引到底是什么呢?

索引

索引其实就是让无序的数据变得有序,具体来讲就是先把创建了索引的数据库的列的内容进行排序,然后生成倒排的表,这个倒排表中保存着对应数据的链接地址,这样查询的时候,我们先从这个倒排表中查询,然后再根据倒排表的内容找到对应的具体数据。

聚簇索引与非聚簇索引

对于mysql的聚簇索引和非聚簇索引,他们都是使用B+树来进行存储的,聚簇索引是按一定的顺序将索引和数据都放在了一起,而非聚簇索引是索引和数据不是在一起存储的,我们先根据索引找到数据行的位置,然后再找到具体的数据,因此非聚集索引需要二次查询,效率不高。另外,聚集索引适合范围查找,因为聚集索引的数据都是有序排列的,而非聚集索引不适合范围查找。

索引的修改

使用索引在插入或更新主键的时候,索引就会被修改,这就可能会产生碎片,如果使用UUID作为主键的话,数据存储就变得稀疏,这可能导致全表扫描,索引主键不建议使用UUID

InnoDb中主键作为聚簇索引,如果没有设置主键就用唯一键,如果没有唯一键就使用数据库内部的行隐藏id来当主键,辅助索引的叶子节点存储的是主键值,MyIsam是非聚集索引,当涉及到全表扫描等操作的时候,MyIsam比较适合,因为占用空间小。

哈希索引与B+树索引

Mysql的索引有哈希索引,B+树索引等,哈希索引的底层是使用哈希表来实现的,当我们进行单条数据查询的时候适合哈希索引,而范围查找的时候,哈希索引在存储的时候原先有序的哈希键经过哈希运算后就可能不连续了,这时候就不合适用哈希索引了,哈希索引也不能利用索引排序和模糊查询,当然最左匹配也是不适合的,大多数情况下我们都采用B+数索引

对应索引的设计原则,我们遵循如何让加入索引之后查询更快,占用空间更小的角度出发

总结

这篇文章主要介绍了一下索引的相关知识,涉及聚簇索引,非聚簇索引,InnoDb存储引擎和MyIsam存储引擎,哈希索引和B+数索引等知识点,这能让我们更好的理解Mysql,利用好Mysql

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。