Mysql系列-索引简介

news2024/11/24 1:00:56

索引是排好序数据结构

1 索引数据结构

  • hash索引、二叉树、平衡二叉树、B-Tree、B+Tree
  •  数据结构在线示例:点击跳转 

2 索引类型

2.1 聚簇索引

又叫“聚集索引” ,索引和数据存储在一起

2.2 非聚簇索引

又叫“非聚集索引” ,索引和数据分开存储

3 InnoDB存储引擎的索引

  1. 表数据文件本身是按B+Tree组织的一个索引结构文件
  2. 聚簇索引-叶节点包含完整的数据
    • 叶子节点保存全部(列)数据
    • 非叶子节点仅保存索引

3.1 设计与常见规范

3.1.1 推荐表中包含整型自增主键

建议Innodb表必须包含主键,并且推荐使用整型自增主键

  • 整型字段占用的更小的空间,可以节约磁盘;
  • 整型字段更方便进行数据比对,而字符串比较时需要逐位比较,效率相对低一些;
  • 自增是为了避免节点分裂,导致插入、更新数据性能降低;

3.1.2 推荐使用自增主键

  • 依次插入:1、3、5、7、9、10、11、12、13、14

  • 当继续插入:2、4之后,树进行了分裂,分裂效果图如下

  • 可以看出,如果是连续自增的ID,则默认会追加新的节点,不会导致节点大规模的分裂
  • 如果插入不连续的ID,会导致原先的节点分裂,影响整体的性能

3.1.3 二级索引叶子节点存储主键值

保证数据一致性,节省存储空间;

具体参考如下图的区别:图3.4 聚簇索引-主键索引、图3.4.2 非聚簇索引-联合主键

3.2 Hash索引

  • 对索引的Key进行一次hash计算就可以定位出数据存储的位置
  • 很多时候Hash索引要比B+Tree索引效率更高效
  • 仅能满足=、in,不支持范围查询
  • Hash冲突,需要额外使用链表解决

3.3 B-Tree索引

  • 叶节点具有相同的深度,叶节点的指针为空
  • 所有索引元素不重复
  • 节点中的数据索引从左到右递增排列

3.4 B+Tree(特指Mysql的B+Tree)

  • 非叶子节点不存在data,只存储索引(冗余索引),可以存放更多的索引
  • 叶节点包含所有索引字段
  • 叶子节点用双向指针链接,提高区间访问的性能
    • 普通的B+Tree的叶子结点之间仅存在单向指针,而mysql对B+Tree做了优化升级,支持双向指针,提升区间之间的数据访问效率
图3.4 聚簇索引-主键索引

3.4.1 非聚簇索引-联合主键

图3.4.1 非聚簇索引-联合主键

3.4.2 非聚簇索引-联合索引

图 3.4.2 非聚簇索引-联合索引

索引优化待完善

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2124285.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新MyEclipse(比如MyEclipse2019)自动生成PO类和配置文件的方法。

新版的MyEclipse(比如MyEclipse2019)上面myeclipse菜单没有了,选择项目右键菜单myeclipse也没有了。 新的方式是:右键菜单——Configure Facets...,然后选择Install Hibernate Facets,下面一步一步按提示操…

【ACM独立出版】第二届物联网与云计算技术国际学术会议 (IoTCCT 2024,9月27-29)

第二届物联网与云计算技术国际学术会议 (IoTCCT 2024)将围绕“物联网与云计算技术”领域,为来自国内外高等院校、科学研究所、企事业单位的专家、教授、学者、工程师等提供一个分享专业经验,扩大专业网络,面对面交流新思想以及展示研究成果的…

机械学习—零基础学习日志(Python做数据分析03)

元组 这里主要讲解了元组的相关语法内容。 可以在数据分析中使用相关的方法。 拆分元组 重点参考来源:

appium历史版本地址链接

appium / Appium.app / Downloads — Bitbucket ios的appium界面图 链接: https://pan.baidu.com/s/1i8BRaZgQA3ImLUhKZjfhiA 提取码: 5c8b

面向对象需求分析

1. 面向对象分析概述 1.1 面向对象基本概念 以对象为中心,以类为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。 1.2 UML统一建模语言 为什么要使用UML UML基本概念 统一建模语言(UML)是一个支持模型化和软…

【苍穹外卖】前端 Day 1

1 Vue 1.1 通过 vue cli 脚手架创建前端工程 1.2 项目结构 1.3 启动项目 VS Code 启动前端项目: npm run serve 注意这里占用端口号 8080 与 java springboot 占用端口号一致,有冲突 serve 是这个名字 终止:ctrl c 修改端口号 2 vue 基本…

JVM面试真题总结(六)

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 解释GC的标记-整理算法及其优点 GC(垃圾收集&#xff…

鸿蒙开发应用图标信息配置

鸿蒙开发配置文件 应用管理里面的应用 手机桌面上的应用信息 学习更多前端知识我已经整理到下面了↓↓↓↓↓↓快去看看吧

Android以及IoT设备传感器软件开发总结

1 传感器选型 1.1 传感器选型 6 axis:Bosch BMI160(比较差),InvenSense MPU6050(DMP),ST LSM6Dxx Acc: Freescale MMA7450L (MicroMachined Accelerometer/MC Multi-Axis, iMX31), Kionix KXSD9…

渣土车检测数据集 2600张 渣土车 带标注 voc yolo

数据集名称: 渣土车检测数据集 数据集规模: 图像数量:2600张标注类型:渣土车检测格式兼容性:支持VOC和YOLO标注格式 数据集内容: 该数据集主要用于训练和评估计算机视觉模型,特别是在渣土车&…

如何本地部署AI智能体平台,带你手搓一个AI Agent

今天分享如何在个人电脑上搭建一个AI智能体平台,可以自定义聊天机器人,设计智能体,编排工作流,知识库,RAG管道等等,还支持本地大模型接入,并对外提供API接口。 如搭建过程有疑问,可…

存储虚拟化

引入-在安装虚拟化VRM界面出现配置数据存储 1.数据存储 还有一处出现数据存储,创建虚拟机时,发放业务虚拟机,不建议选择,autoDS_CNAxx 2.引入FC集群文件系统 传统存储上一个LUN映射给多个CNA使用--集群文件系统VIMS-锁机制--共享存储 3.集群…

工厂方法模式和抽象工厂模式

工厂方法模式 一个工厂只能创建一种产品 工厂方法模式的结构 工厂方法模式包含以下4个角色 Product(抽象产品) ConcreteProduct(具体产品) Factory(抽象工厂) ConcreteFactory(具体工厂…

一篇文章带你看懂住宅代理如何实现内容过滤

在网络安全中,内容过滤是用户隐私保护的重要组成部分,将不良内容拦截在安全网之外是内容过滤的重中之重。在当下,住宅代理作为异军突起的网络安全工具,在内容过滤上有着不错的表现。本文将深入探讨住宅代理如何实现内容过滤&#…

项目小结二()

一.个人信息的界面 这里可以进行用户信息的修改,并渲染数据上去 二.这两天,出现的问题: 1.mybatis中 字段取别名 (还没验证,是否正确) 问题描述:由于实体类中的变量名,与数据库中…

数据权限的设计与实现系列8——前端筛选器组件Everright-filter集成框架开发1

背景 前面我们对筛选器组件进行了功能探索和技术验证,接下来就开始着手集成工作,融入一二三开发平台,打通前后端,最终让数据权限控制功能落地。 整体集成工作比较复杂,我们遵循由易到难的原则,先搭建出完整…

IPv6理论基础

IPV6 地址介绍 地址标识方法 格式 : XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX,128bit,8个16位,16进制 X表示十六进制的一个字符,可以是0 - 9,A -F 字母大小写不敏感,最终设备上显示均为大写 一个地址由8个字段构成…

Leetcode3266. K 次乘运算后的最终数组 II

Every day a Leetcode 题目来源:3266. K 次乘运算后的最终数组 II 解法1:3266. K 次乘运算后的最终数组 II 用最小堆手动模拟操作,直到原数组的最大值 mx 成为这 n 个数的最小值。 设此时还剩下 k 次操作,那么: 对…

HarmonyOs DevEco Studio小技巧11--AI插件

AI智能辅助编程工具 CodeGenie 简介 DevEco AI辅助编程工具(CodeGenie)为开发者提供高效的应用/服务AI辅助编程工具,支持HarmonyOS NEXT领域的智能知识问答、ArkTS代码补全/生成和万能卡片生成能力,提高开发者编码效率。 文档中…

mysql整体架构描述

文章目录 数据库架构示意图1. 连接层2. 服务层3. 存储引擎层4. 文件系统层5. 系统层主要特性 数据库文件格式InnoDB 存储引擎文件类型及用途 MyISAM 存储引擎文件类型及用途 其他文件类型文件内容示例表结构文件示例 (.frm)InnoDB 数据文件示例(.ibd)MyI…