暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
跳槽必看 MySQL 索引:B+ 树原理揭秘与索引优缺点分析.docx
69
14页
0次
2024-03-06
5墨值下载
一、索引介绍
1、索引定义
索引是存储引擎中,用于快速找到记录的一种数据结构。索引能够帮助存储引擎快速获取数据,形
象的说就是索引是数据的目录。
所谓的存储引擎,通俗的来说就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数
据等 技术的实现方法。
MySQL 存储引擎有 MyISAMInnoDBMemory,其中 InnoDB 是在 MySQL 5.5 之后成为默
认的存 储引擎。
在实际场景中,索引对于良好的性能起到非常关键的作用。或许在数据量小且负载较低时,索引的
不恰当使用可能对性能的影响可能不会太明显,但是当表中的数据量越来越大的时候,索引对性能
的影响就愈发重要,不恰当的索引会让性能急剧的下降。
2、索引的查找方式
MySQL InnoDB 存储引擎中
若没有索引的情况下进行数据查询
a) 在一个数据页中查询
当表中的记录比较少时,所有记录可以存放到一个数据页中。当查询记录时,根据搜索条件的不同
查询分为两种情况:
主键为搜索条件:在一个数据页内的记录会根据主键值的大小从小到大的顺序组成一个
单向链表。每个数据页都会为存储在它里面的记录生成一个页目录。通过主键查询某条记录可
在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组的记录,即可快速找
到指定的记录。
其他列作为搜索条件:对于非主键列的查找,由于没有为非主键列建立对应的目录页,
未创建索引。无法用二分法快速定位相应的槽,只能从 Inmum 记录开始依次遍历单向链
表中的每条记录,然后对比每条记录是否符合搜索条件,即全表扫描,因此效率非常低。
b) 在多个数据页中查询
在很多情况下,表中存放的记录是非常多的,需要查询到的数据可能分布在多个数据页中,在多个
页中查找记录可以分为两个步骤:
1. 定位到记录所在的页
2. 从所在的页内查找相应的记录
在没有索引的情况下,无论是根据主键列还是其他列的值查找,都不能快速定位到记录所
在的页,因此只能从第一页沿着双向链表一直往下找,因而非常耗时。
若存在索引的情况下进行数据查询
在创建索引的情况下,每个数据页都会为存储在它里面的记录生成一个目录项,在通过索
引查找某条记录时可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组
中的记录,快速找到指定的记录,确定记录后,即可向下寻找当前记录对应的下一个页节点,
直到寻找到存在目标记录的叶子结点。
二、索引分类
1、按数据结构分类
Hash 索引
哈希表是一种以键-值(key-value)存储数据的结构,输入待查找的键,即 key,就可以
找到其对应的值,即 value
of 14
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜