索引—MySQL

文章目录

  • 1.定义以及相关知识
    • 1.1定义
    • 1.2数据库保存数据的基本单位
  • 2.MySQL中索引分类
    • 2.1B树和B+树
    • 2.2主键索引(聚簇索引)
    • 2.3非聚簇索引
    • 2.4覆盖索引
    • 2.5复合索引(联合索引)
    • 2.6基于B+树的索引
    • 2.7hash索引

1.定义以及相关知识

1.1定义

使用一定的数据结构来保存索引字段对应的数据,以后根据索引字段来进行检索提高检索效率

注意:使用一定的数据结构需要一定的空间来保存,索引字段可以是一列或多列;是否能够命中索引是SQL性能优化的关键

(1)建立索引:类似建立书籍目录或手机的电话簿
(2)使用索引:查询条件中的字段能够命中索引
(3)创建索引、更新/删除索引字段、插入数据都会导致索引更新的耗时操作

1.2数据库保存数据的基本单位

(1)数据库保存数据的基本单位是page
在这里插入图片描述

(2)目的:硬盘读取文件到内存的io操作也是耗时的,读取数据最好也就保证能最少次读取到需要的结果集

2.MySQL中索引分类

创建某个索引可以是以下多种类型
(1)从索引存储结构划分:B+树索引,hash索引
(2)从应用层次划分:普通索引、唯一索引、主键索引、复合索引
(3)从索引键值类型划分:主键索引、辅助索引(二级索引)
(4)从数据存储和索引键值逻辑关系划分:聚集索引(聚簇索引)、非聚集索引(非聚簇索引)
(5)从索引列数量划分:单列索引、复合索引

2.1B树和B+树

(1)B树:所有节点都保存有索引列及数据
(2)B+树:每个节点都是page,叶子结点保存有索引列及数据,非叶子结点只有索引字段,B+树叶子结点全部相连
(3)区别:
①数据的保存位置不同:B+树保存在叶子节点,B树保存在所有的节点中(体现出B+树优势:节点不存储data,这样一个节点就可以存储更多的key,可以使得树更矮,所以IO操作次数更少;查询性能稳定:每次查询都是从根节点遍历到叶子节点,查询路径长度相同,即每次查询效率相当,时间复杂度固定是O(log(n))
②叶子节点的指向不同:B+树相邻的叶子节点通过指针相连,B树没有(体现出B+树优势:所有叶子节点形成有序链表,便于范围查找)

2.2主键索引(聚簇索引)

(1)默认是B+树,聚簇索引,一张表只能有一个主键索引
(2)在B+树的叶子结点上存放有主键字段(索引字段)+整行数据
(3)优点:速度快
(4)缺点:主键需要是整形且字段不要太长,更新代价大,效率低

2.3非聚簇索引

(1)非主键索引,可以使用很多类型的索引,如B+树、hash等等
(2)如果使用的是B+树存储结构,叶子结点上存放索引字段的值+主键的值
(3)搜索数据的方式:先通过索引字段找到叶子结点上的主键值,再通过主键值找到整条数据(属于回表操作)
(4)优点:更新代价相对比聚簇索引小(叶子结点是索引值和主键值,没有真实数据)
(5)缺点:依赖有序数据,可能产生回表操作导致效率更低

2.4覆盖索引

(1)覆盖索引是一个索引包含所需要查询的字段的值
(2)使用:select 覆盖索引字段 from 表 where 覆盖索引字段 = “”;
(3)注意:is null / is not null是不会走索引的
(4)优点:不需要回表操作

2.5复合索引(联合索引)

(1)使用多列来创建索引
(2)符合最左匹配原则:联合索引的多个字段遵循从左往右的优先级,最左优先,当出现范围查询是停止匹配
(3)查询的条件字段顺序是无所谓的,关键是索引创建的字段顺序(查询是必须包含创建索引的第一个字段否则不匹配)

2.6基于B+树的索引

(1)主键索引(聚簇索引)
(2)非聚簇索引(可以建立成B+树的索引)
(3)优化原则:索引字段尽量不要有null的值
修正(查询的时候,条件是字段is [not] null, !=会走全表扫描,不会走引);频繁查询的字段建立索引:需要考虑最左匹配原则,顺序是左边;频繁更新的字段,慎用索引(索引更新代价大)=>适用读多写操的场景;范围查询(between, <, <, like等)可能走索引,也可能不走(MySQL中,存在一个查询优化器,用于判断如何执行:多个索引存在时,先找到最优的一个索引,判断是不是走这个索引更快,如果是,走索引;如果不是,全表扫描)

2.7hash索引

(1)HashMap
(2)存储数据的特性:键值对,无序且键唯一
(3)底层数据结构:数组+链表+红黑树
(4)原理:存取元素,复杂的是存(put)流程

①算数组位置,往上边放(根据key的hashcode值,基于内部hash函数计算出数组索引);②如果该位置没有元素,往这个地方放;③如果有元素,往链表上放,看是否存在节点equals(key),如果存在就替换;如果不存在尾插;④如果放进去了东西,可能需要扩容

(5)hash索引的特点:不支持顺序和范围查询

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据导向下制造业的生产效率、交易效率提升办法

在智能制造和工业4.0成为趋势的今天&#xff0c;大部分制造业企业&#xff0c;均已在企业内部通过实施PLM系统&#xff08;Product Lifecycle Management&#xff0c;产品生命周期管理系统&#xff09;&#xff0c;实现了对组织内产品研发过程和产品研发数据的管理&#xff0c;…

基于Spring Boot的在线考试系统

系统分析 可行性分析 一个完整的系统&#xff0c;可行性分析是必须要有的&#xff0c;因为关系到系统生存问题&#xff0c;对开发的意义进行分析&#xff0c;能否通过本系统来补充线下在线考试管理模式中的缺限&#xff0c;去解决其中的不足等&#xff0c;通过对本系统&#…

基于SpringBoot, Vue实现的校园二手书交易系统

背景 在Internet高速发展的今天&#xff0c;计算机的应用几乎完全覆盖我们生活的各个领域&#xff0c;互联网在经济&#xff0c;生活等方面有着举足轻重的地位&#xff0c;成为人们资源共享&#xff0c;信息快速传递的重要渠道。在中国&#xff0c;网上管理的兴起也同时飞速发…

【Linux】基本权限

&#x1f601;作者&#xff1a;日出等日落 &#x1f514;专栏&#xff1a;Linux 任何值得到达的地方&#xff0c;都没有捷径。 目录 Linux权限: 权限的概念&#xff1a; Linux上面的用户分类&#xff1a; Linux权限管理 文件访问者的分类&#xff08;人&#xff09; 文件…

金兰组织 | 2023金兰解决方案集经营管理篇正式发布

为助力企业创新管理、提质增效&#xff0c;人大金仓携手金兰组织成员单位&#xff0c;于近期发布多项经营管理领域的联合解决方案&#xff0c;共享创新应用成果。 /人大金仓高级副总裁宋瑞/ 人大金仓高级副总裁宋瑞在致辞中表示&#xff1a;“联合解决方案创新是指通过把不同领…

跟着我学 AI丨ChatGPT 详解

随着人工智能的发展&#xff0c;聊天机器人成为了一个备受关注的领域。而ChatGPT作为其中的佼佼者&#xff0c;其功能和技术水平也越来越受到人们的关注。那么&#xff0c;什么是ChatGPT&#xff1f;它又有哪些优点和限制呢&#xff1f; ChatGPT是一款基于自然语言处理技术开发…

178_技巧_Power BI 动态排名多项展示

178_技巧_Power BI 动态排名多项展示 一、背景 在 Power BI 中做排名矩阵时&#xff0c;我们经常遇到同一维度下&#xff0c;多项展示排名的问题。类似这样的排名矩阵&#xff0c;排名的名次不会太多&#xff0c;但是同一维度下会有多项同时展示排名&#xff0c;并且还要满足…

第10 CURD操作与RedisCache缓存的强制清理的实现

using System.Net; using Microsoft.Extensions.Caching.Distributed; using Core.Caching; using Core.Configuration; using StackExchange.Redis; namespace Services.Caching { /// <summary> /// 【Redis分布式缓存数据库软件管理器--类】 /// <remarks>…

2023零售店铺管理系统最新排名,这5款性价比高!

很多零售店铺的老板&#xff0c;每天都在被开单收银、记账对账、商品销售、销售数据等各种琐事困扰&#xff0c;使用传统的人工管理模式&#xff0c;耗费了大量的时间和成本&#xff0c;也没有达到理想的效果。 其实&#xff0c;零售店铺管理也可以很简单省事&#xff0c;借助零…

TCP三次握手

TCP三次握手 文章目录 TCP三次握手1. TCP三次握手过程和状态变迁1. 准备工作2. 进行连接 2. 能把三次握手改为两次握手吗&#xff1f;3. 改为两次握手会出现什么后果&#xff1f;4. 改为四次握手行不行&#xff1f;5. TCP第三次握手失败了怎么办&#xff1f;6. 三次握手是否可以…

探索 Elasticsearch 8.X Terms Set 检索的应用与原理

1、Terms Set 检索简介 Terms Set查询是Elasticsearch中一种强大的查询类型&#xff0c;主要用于处理多值字段中的文档匹配。 其核心功能在于&#xff0c;它可以检索至少匹配一定数量给定词项的文档&#xff0c;其中匹配的数量可以是固定值&#xff0c;也可以是基于另一个字段的…

抖音商城小程序搭建的注意事项

抖音商城小程序已经成为了越来越多电商企业的选择&#xff0c;毕竟它具有强大的用户资源和社交传播力。但是&#xff0c;在搭建抖音商城小程序的过程中&#xff0c;还有一些需要注意的事项。 1、制定明确的策略和目标 在搭建抖音商城小程序前&#xff0c;必须事先制定明确的策…

三步配置轻量级服务器nginx

这里写目录标题 一 nginx及其应用场景1.什么是nginx2.应用场景背诵 二 nginx的配置安装1.选择nginx版本2. 安装配置环境3.安装nginx4.启动nginx 三 访问 一 nginx及其应用场景 1.什么是nginx 一款轻量级的Web服务器&#xff0c;反向代理服务器&#xff0c;以及电子邮件代理服…

java获取resources路径的方法

我们在写程序的时候&#xff0c;有时候会发现代码不能正常运行&#xff0c;出现提示异常的问题&#xff0c;这就说明我们的代码没有执行完&#xff0c;也就是没有 resource&#xff0c;其实遇到这种情况&#xff0c;我们只需要把代码重新执行一遍即可。 在 java中是可以实现 re…

实验六 触发器与存储过程

实验六 触发器与存储过程 目录 实验六 触发器与存储过程 1、SQL触发器&#xff1a;删除学生数据题目代码题解 2、SQL触发器&#xff1a;创建成绩表插入触发器题目代码题解 3、 SQL存储过程&#xff1a;查询订单题目代码题解 4、SQL存储过程&#xff1a;建立存储过程&#xff0c…

浅析S32K324的时钟树

S32K3XX系列的时钟树梳理 如下图为S32K3XX系列的时钟树图&#xff1a; 一、时钟源 时钟源说明FIRC快速内部RC时钟源SIRC慢速内部RC时钟源FXOSC快速外部晶振时钟源SXOSC慢速外部晶振时钟源 S32K3系列的mcu有4个时钟源如上表。 二、FIRC&#xff08;快速内部RC时钟源&#…

【A200】 TX1核心 JetPack4.6.2版本如何修改DTB文件测试全部SPI

大家好&#xff0c;我是虎哥&#xff0c;很长时间没有发布新内容&#xff0c;主要是这段时间集中精力&#xff0c;研究DTB设备树的修改&#xff0c;以适配不同载板&#xff0c;同时也是专门做了一个TX1&TX2核心&#xff0c;双网口&#xff0c;可以使用SPI 扩展CAN接口的载板…

Actuators + jolokia

Actuators + jolokia Jolokia造成的XXE漏洞 首先我们查看我们当前环境http://x.x.x.x/jolokia/list地址,是否存在reloadByURL这个方法, 这个方法是造成RCE的关键。因为logback组件提供的reloadByURL操作使我们可以从外部URL重新加载日志配置 创建logback.xml和file.dtd文件…

【神经网络】tensorflow实验9--分类问题

1. 实验目的 ①掌握逻辑回归的基本原理&#xff0c;实现分类器&#xff0c;完成多分类任务&#xff1b; ②掌握逻辑回归中的平方损失函数、交叉熵损失函数以及平均交叉熵损失函数。 2. 实验内容 ①能够使用TensorFlow计算Sigmoid函数、准确率、交叉熵损失函数等&#xff0c…

tomcat集群下的session共享和负载均衡

环境 操作系统&#xff1a;windows tomcat1&#xff1a;Apache Tomcat/7.0.52&#xff08;8085&#xff09; tomcat2&#xff1a;Apache Tomcat/7.0.52&#xff08;8086&#xff09; jre&#xff1a;1.7.0_80 nginx&#xff1a;nginx-1.20.1&#xff08;8070&#xff09; redis…
最新文章