详谈数据库索引
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了详谈数据库索引,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2804字,纯文字阅读大概需要5分钟。
内容图文
![详谈数据库索引](/upload/InfoBanner/zyjiaocheng/501/92e72b20fb8f47d39c9410e5d26c66b8.jpg)
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。
1、索引类型有:B树索引、哈希索引、空间数据索引(R树)、全文索引。
常见的索引结构有:哈希索引和B+树索引
1)哈希,例如HashMap,查询/插入/修改/删除的平均时间复杂度都是O(1);
2)B树,查询/插入/修改/删除的平均时间复杂度都是O(lg(n));
对于大多数的Mysql引擎都是B树索引结构,虽然哈希索引结构检索速度能够达到O(1)但是仅限于查询单个记录,对于大范围内的查询、排序、分组、比较等查询哈希结构就退化为O(n),而对于B树结构仍然可以保持O(lg(n))。
2、对于树形结构索引可以对比几种不一样的树形结构:二叉树、B树、B+树。
1)二叉树
- 因为一棵深度为k,最多有2^k-1个节点,所以当数据量大的时候,树的高度会比较高,数据量大的时候,查询会比较慢;
- 由于二叉树自身结构,每个节点只存储一个记录,可能导致一次查询有很多次磁盘IO;
2)B树
- 不再是二叉搜索,而是m叉搜索;
- 叶子节点,非叶子节点,都存储数据;
- 中序遍历,可以获得所有节点;
- 由于是m分叉的,高度能够大大降低,能够极大减少检索时间;
- 每个节点可以存储j个记录,利用局部性原理每一次读取磁盘数据能够将相近的数据全部读取出来,极大减少磁盘IO;
3)B+树
B+树是B树的变形,仍然是m叉搜索树,可以更加适合作为索引结构。
- 跟B树不一样的是非叶子节点不再存储数据,数据只存储在同一层的叶子节点上,所以B+树中根到每一个节点的路径长度相同。
- 叶子之间,增加了链表,获取所有节点,不再需要中序遍历;
- 范围查找,定位min与max之后,中间叶子节点,就是结果集,不用中序回溯,这个在范围查询在SQL中用得很多,这是B+树比B树最大的优势。
- 叶子节点存储实际记录行,记录行相对比较紧密的存储,适合大数据量磁盘存储;
- 非叶子节点,不存储实际记录,而只存储记录的KEY的话,那么在相同内存的情况下,B+树能够存储更多索引;
3、Mysql常用的两个引擎InnoDB和MyISAM都使用B+索引的差异
1)MyISAM引擎
MyISAM引擎使用B+Tree作为索引结构,索引文件和数据文件是分开的,索引的叶节点data域存放的是数据记录的地址。检索过程首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据记录。 primary key索引结构:![详谈数据库索引 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425030718244.jpg)
![详谈数据库索引 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425030718438.jpg)
![详谈数据库索引 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425030718534.jpg)
详谈数据库索引
标签:引擎 png 数据库索引 系统 最大的 快速 sam 需要 数据库表
本文系统来源:https://www.cnblogs.com/kma-3/p/9764731.html
内容总结
以上是互联网集市为您收集整理的详谈数据库索引全部内容,希望文章能够帮你解决详谈数据库索引所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。