我的编程空间,编程开发者的网络收藏夹
学习永远不晚

索引上(4)

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

索引上(4)

索引上(4)

索引

作用:提高数据查询的效率

常用索引模型

  • 哈希表
  • 有序数组
  • 搜索树

哈希表
以键值对的形式存储,适合于只有等值查询的场景。
用一个哈希函数把key换算成一个确定的位置,然后把value这个位置的数组中。一个key会对应一个数组,数组中会有多个valuevalue并不是有序的。
查找时先通过哈希函数算出key,找到具体的数组,然后遍历数组,找到具体的位置。

有序数组
以有序数组形式存储,等值查询和范围查询场景中性能非常优秀,只适用于静态存储引擎。
仅仅看查询效率,有序数组就是最好的数据结构了,但是,在需要更新数据多的时候就麻烦了,你往中间插入一个记录就必须得挪动后面所有的记录,成本太高。
所以,有序数组索引只适用于静态存储引擎,比如你要保存2017年某个城市的所有人口信息,这类不会再修改的数据。

搜索树
以类似二叉树的多叉树来实现。

  • 二叉搜索树:每个节点的左儿子小于父节点,父节点又小于右儿子。
  • 多叉树:每个节点有多个儿子,儿子之间的大小保证从左到右。

MySQL中,索引是在存储引擎层实现的,所有并没有同一的索引标准,即不同存储引擎的索引的工作方式并不一样。而即使多个存储引擎支持同一种类型的索引,其底层的实现也可能不同。

InnoDB使用了B+树索引模型,所有的数据都是存储在B+树中的。每一个索引在InnoDB里面对应一棵B+树,主键索引对应主B+树。

  • 主键索引:对应主B+树,叶子节点存储的是整行数据,也称为聚簇索引
  • 非主键索引:每个非主键索引对应一个B+树,叶子节点存储的是主键的值,也称为二级索引。

基于主键索引和普通索引的查询的区别?

  • 如果语句是select * from T where ID = 500,主键查询方式,即只需要搜索ID这棵B+树,叶子节点中有存储整行数据;
  • 如果语句是select * from T where k = 5,普通索引查询方式,则需要先搜索k索引树,得到主键ID的值为500,再到主键ID索引树搜索一次,这个过程成为回表。

回到主键索引树搜索的过程,我们称为回表。

也就是说:基于非主键索引的查询需要多扫描一颗索引树。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

索引上(4)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

索引上(4)

索引作用:提高数据查询的效率常用索引模型哈希表有序数组搜索树哈希表以键值对的形式存储,适合于只有等值查询的场景。用一个哈希函数把key换算成一个确定的位置,然后把value这个位置的数组中。一个key会对应一个数组,数组中会有多个value,value并不是有
索引上(4)
2016-01-08

[20191218]降序索引疑问4.txt

[20191218]降序索引疑问4.txt--//前几天优化一个项目,我发现许多表里面有有隐含字段,一般开发很少建立函数索引.我自己检查发现里面存在大量的降序索引.--//我感觉有点奇怪,为什么开发要建立大量降序索引有什么好处呢?--//我在链接http://
[20191218]降序索引疑问4.txt
2017-06-19

04.深入浅出索引(上)

简单来说,索引的出现就是为了提高数据查询效率,就像书的目录一样。 索引的常见模型 索引实现的方式有很多种,所以这里就引入了索引模型的概念,可以用于提高读写效率的数据结构很多,比较常见的数据结果有以下三种:哈希表、有序数组和搜索树。 哈希表是一种以键值存储数
04.深入浅出索引(上)
2020-03-05

SQL索引(索引优化)

#1.最左前缀匹配原则,非常重要的原则, create index ix_name_email on s1(name,email,) - 最左前缀匹配:必须按照从左到右的顺序匹配 select * from s1 where name="egon"; #可以
SQL索引(索引优化)
2021-11-01

MySQL索引:B+树索引

MySQL索引:B+树索引B+树索引是传统意义上的索引,这是目前关系型数据库系统中查找最为常用和最为有效的索引。B+树索引的构造类似于二叉树,根据键值快速找到数据B树B+树是由B树演化而来的,在了解B+树之前,我们需要对B树有一点认知。B树全称Balance-
MySQL索引:B+树索引
2021-09-01

【SQL应知应会】索引(三)• MySQL版:聚簇索引与非聚簇索引;查看索引与删除索引;索引方法

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle 索引 • MySQL
2023-08-24

mysql中聚集索引、辅助索引、覆盖索引、联合索引怎么用

这篇文章主要介绍了mysql中聚集索引、辅助索引、覆盖索引、联合索引怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。聚集索引(Clustered Index)聚集索引就是
2023-06-29

索引

在关系数据库的三级模式结构中表的结构属于概念模式索引的结构定义、存储文件属于内模式视图的定义属于外模式 索引索引是对数据库表中一个或多个列的值进行排序的结构与表中搜索所有的记录行必,索引有助于更快的获取信息 要提高查询速度,必须按查询字段对记录排序索引是表中数
索引
2014-11-07

MySQL索引 索引分类 最左前缀原则 覆盖索引 索引下推 联合索引顺序 - G

MySQL索引 索引分类 最左前缀原则 覆盖索引 索引下推 联合索引顺序 What"s Index ?索引就是帮助RDBMS高效获取数据的数据结构。索引可以让我们避免一行一行进行全表扫描。它的价值就是可以帮助你对数据进行快速定位。 索引分类按照功能逻辑来分普通
MySQL索引 索引分类 最左前缀原则 覆盖索引 索引下推 联合索引顺序 - G
2018-09-14

索引原理及B树索引

索引原理及B树索引http://hongyitong.github.io/2017/01/05/%E7%B4%A2%E5%BC%95%E5%8E%9F%E7%90%86%E5%8F%8AB%E6%A0%91%E7%B4%A2%E5%BC%95/一、索引的原理说
索引原理及B树索引
2020-03-30

编程热搜

目录