MySQL / 索引模型
一、索引的作用
提高数据查询效率。
二、常见索引模型
哈希表、有序数组、搜索树。
三、哈希表
思路:把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。
哈希冲突的处理办法:链表、红黑树。
哈希表适用场景:只有等值查询的场景。
四、有序数组
思路:按顺序存储。查询用二分法就可以快速查询,时间复杂度是:O(log(N))。
有序数组查询效率高,更新效率低
有序数组的适用场景:静态存储引擎。
五、二叉搜索树
每个节点的左儿子小于父节点,父节点又小于右儿子。
查询时间复杂度O(log(N)),更新时间复杂度O(log(N))
六、MySQL索引模型
数据库存储大多不适用二叉树,因为树高过高,会适用 N 叉树。
InnoDB 中的索引模型:B+Tree 。
七、索引类型
主键索引(聚簇索引)的叶子节点存的是用于保存数据的页,非主键索引(二级索引)的叶子节点内容是主键的值。
主键索引和普通索引的区别:主键索引只要搜索 ID 这个 B+Tree 即可拿到数据。普通索引先搜索索引拿到主键值,再到主键索引树搜索一次(回表)
一个数据页满了,按照B+Tree算法,新增加一个数据页,叫做页分裂,会导致性能下降。空间利用率降低大概50%。当相邻的两个数据页利用率很低的时候会做数据页合并,合并的过程是分裂过程的逆过程。
从性能和存储空间方面考量,自增主键往往是更合理的选择。
(SAW:Game Over!)
MySQL / 索引模型相关推荐
- 一文介绍 Mysql 索引模型 B+ 树
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:后端程序员必备:书写高质量SQL的30条建议个人原创+1博客:点击前往,查看更多 来源:https://segm ...
- Mysql 索引模型 B+ 树详解
一.认识二叉树 首先,在了解 mysql 中的 B+ 树之前,我们需要搞懂什么是二叉树.二叉树是一种常见的非线形数据结构,数据是以一对多的形态组织起来的,我画了一张图来帮助你理解: 在二叉树中,有一种 ...
- mysql 二叉树表设计_Mysql 索引模型 B+ 树详解
一.认识二叉树 首先,在了解 mysql 中的 B+ 树之前,我们需要搞懂什么是二叉树.二叉树是一种常见的非线形数据结构,数据是以一对多的形态组织起来的,我画了一张图来帮助你理解: 在二叉树中,有一种 ...
- MySQL索引背后的数据结构及算法原理【转】
http://blog.codinglabs.org/articles/theory-of-mysql-index.html MySQL索引背后的数据结构及算法原理[转] 摘要 本文以MySQL数据库 ...
- Mysql 索引原理及优化
本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接. 一.摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引 ...
- 转:MySQL索引原理及慢查询优化
来自:http://tech.meituan.com/mysql-index.html MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色, ...
- mysql系列十、mysql索引结构的实现B+树/B-树原理
一.MySQL索引原理 1.索引背景 生活中随处可见索引的例子,如火车站的车次表.图书的目录等.它们的原理都是一样的,通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的 ...
- MySQL索引背后的数据结构及算法原理--转
MySQL索引背后的数据结构及算法原理 作者 张洋 | 发布于 2011-10-18 MySQL 索引 B树 优化 原文地址:http://blog.codinglabs.org/articles/t ...
- MYSQL:MYSQL索引为什么选择B+树?
带有顺序访问指针的B+Tree 一般在数据库系统或文件系统中使用的B+Tree结构都在经典B+Tree的基础上进行了优化,增加了顺序访问指针. 图4 如图4所示,在B+Tree的每个叶子节点增加一个指 ...
最新文章
- windows 2008 R2无法创建性能收集器
- shouldParkAfterFailedAcquire
- 电脑技巧:键盘上ESC按键的使用小技巧,你都知道吗?
- PHP中开发的良好习惯总结(持续更新) By ACReaper
- 控制台启动jar包关闭控制台怎么关java程序_Jpom一款简而轻的低侵入式Java运维、监控软件...
- 信息学奥赛C++语言: 素数回文数的个数
- HLSL编译工具—FXC
- python3 抽象基类 abc.abstractmethod
- java中mydoc_实验二/MyDoc.java · 20175326李一潇/20175326java - Gitee.com
- 电信光猫F652破解经验谈
- OV2640 DCMI
- python 隐马尔可夫模型的中文分词和词性分类实验 hmm
- ‘gbk‘ codec can‘t decode byte 0xae in position 199: illegal multibyte sequen 问题解决
- canvas 实现截图功能——截取图片的一部分
- 微软紧急发布Windows XP/7 WannaCry漏洞补丁
- 模型预测控制(MPC)+逻辑控制(相平面分区控制)--matlab例程介绍
- 《算法和数据结构》算法零基础五十题讲解
- 区块链创业者惠轶之死
- 第三章习题2存款利息的计算
- 百度CEO李彦宏:我是互联网的信徒
热门文章
- 监控软件nagios之安装
- Hyper-V之02 虚拟机复制与故障转移
- 计划任务工具cron 的配置和说明
- (转)iOS7界面设计规范(1) - UI基础 - 为iOS7而设计
- Android应用性能优化之使用SparseArray替代HashMap(转)
- 《女仆咖啡帕露菲》香浓背后,激励的力量
- php怎么连接memcached,如何使用 PHP 扩展 Memcached 的长连接模式
- 提高 DevTools 控制台调试 console 的 12 种方法
- WIN10 中mysql8 忘记密码
- Fedora 35安装 VMware Workstation 16.1.2并解决报错:efore you can run VMware several modules must be compiled