索引上(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索引树搜索一次,这个过程成为回表。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9288.html

(0)
上一篇 2023-02-11
下一篇 2023-02-11

相关推荐

  • Redis学习笔记(十一) 服务器

    Redis学习笔记(十一) 服务器Redis服务器负责与多个客户端建立网络通信,处理客户端发送的命令请求,在数据库中保存客户端执行命令所产生的数据,并通过资源管理来维持服务器自身的运转。 命令请求过程(以set命令为例) 1、客户端向

    2023-03-01
    150
  • GaussDB for DWS:内存自适应控制技术总结

    GaussDB for DWS:内存自适应控制技术总结1.技术背景 在SQL语句复杂、处理数据量大的AP场景下,单个查询对内存的需求越来越大,多个语句的并发很容易将系统的内存吃满,造成内存不足的问题。为了应对这种问题,GaussDB for DWS引入…

    2023-03-20
    152
  • 提高Python列表排序效率的最佳实践

    提高Python列表排序效率的最佳实践在Python编程中,列表是常见的数据类型,而对于这种数据类型的排序操作,往往是我们需要重点考虑的问题之一。由于Python拥有极为丰富的标准库以及第三方库,我们可以通过选取合适的排序函数,优化Python列表排序效率。

    2023-12-04
    105
  • Linux中MySQL的安装以及卸载「终于解决」

    Linux中MySQL的安装以及卸载「终于解决」一.MySQL MySQL是一种开放源代码的关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购.目前 MySQL被

    2023-04-22
    143
  • mysql中间件proxysql实现mysql读写分离「建议收藏」

    mysql中间件proxysql实现mysql读写分离「建议收藏」mysql中间件proxysql实现mysql读写分离 1. mysql实现读写分离的方式 mysql 实现读写分离的有以下几种: 程序修改mysql操作,直接和数据库通信,简单快捷的读写分离和随机…

    2023-04-04
    149
  • 包含python图像失真的词条

    包含python图像失真的词条 学习目标:

    2023-10-26
    140
  • 【MySQL】笔记(4)-[亲测有效]

    【MySQL】笔记(4)-[亲测有效]8.7、索引的实现原理:通过B Tree缩小扫描范围,底层索引进行了排序,分区,索引会携带数据在表中的“物理地址”,最终通过索引检索到数据之后,获取到关联的物理地址,通过物理地址定位表中的数据,效率是

    2023-05-01
    129
  • Python求解圆周率的平方根

    Python求解圆周率的平方根圆周率的平方根是一个有趣的数学问题,它涉及到数学、计算机科学和统计学等多个领域。在本文中,我们将从多个方面来探讨Python如何求解圆周率的平方根。

    2024-03-26
    86

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注