MYSQL学习笔记:索引

news2025/2/24 12:10:11

MYSQL学习笔记:索引

文章目录

  • MYSQL学习笔记:索引
    • 索引的分类
    • 索引的创建删除
    • 索引优化
    • B树索引
    • B+树
    • InnoDB主键和二级索引树
    • 聚集索引与非聚集索引
    • 哈希索引
    • INNODB的自适应哈希索引
    • 索引和慢查询

在这里插入图片描述

  • 用索引也是要涉及磁盘I/O的操作的
  • 索引也是一种数据结构,对某列建索引的时候都要进行一个排序的,这一列的文件有增加减少修改都是要涉及索引数据的改动操作的

在这里插入图片描述

索引的分类

物理上分为聚集索引和非聚集索引

  • 普通索引:数量不限,可以给任意普通字段创建普通索引,一张表的SQL查询只能用一个索引
  • 唯一性索引:使用UNIQUE修饰的字段,值不能重复,主键索引隶属于唯一性索引
  • 主键索引:使用PRIMARY KEY修饰的字段,会自动创建索引(MYISAM,innoDB(如果没设主键,INNODB会自动创建,因为数据和索引存在一起,没有索引没办法存储数据))
    • 单列索引 在一个字段上创建索引
  • 多列索引: 在表的多个字段上创建索引(uid+cid,多列索引必须使用第一个列才能用到多列索引,否则用不到)
  • 全文索引:使用FULLTEX修饰的字段可以设置全文索引,支支持char varchar和text类型字段,常用于较大的字符串类型上,可以提高查询速度

索引的创建删除

方法1:在建表的时候建立索引

CREATE TABLE index1(id INT,
name varchar(20),
sex enum ('male','famale'),
INDEX(id,name);

方法2:在已创建的表上创建索引

CREATE [UNIQUE] INDEX 索引名 ON 表名(属性名(length)[ASC|DESC]);
create index pwdindex on user(age);

删除索引:

DROP INDEX 索引名 ON 表名;

加索引后只扫一行:不管数据规模如何,花费的时间一样长
在这里插入图片描述

索引优化

  1. 给经常用作where过滤条件的字段加索引
  2. 给字符串创建索引索引值尽可能短,不然存储文件大,加载慢
  3. 如果过滤条件涉及类型转换或者用了mysql的函数调用表达式计算,就不能用索引了。
    在这里插入图片描述
    password是字符串类型,10000是默认INT类型,如果涉及类型转换或者用了mysql的函数就不能用索引了

B树索引

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果用m=500(一般取300~500)阶B树最多用----》3层:
在这里插入图片描述

最理想的情况是一次磁盘IO读取的磁盘块内容刚好存储在B树的一个节点中
在这里插入图片描述

B+树

为啥用B+树而不是B树
首先看B树的特点:

  1. 索引和数据分散在不同的节点上,离根节点近搜索快,离根节点远搜索就慢,花费的IO不平均,每一行搜索花费的时间也不平均
  2. 每一个非叶子节点上不仅仅要存储索引(key) 还要存索引所在哪一行的data数据。一个节点能存放索引的key的个数比只存储key的节点少得多
  3. B树很不方便进行范围搜索(例如搜索13~18的数据,既要搜索左子树也要搜索右子树),整表遍历看起来不方便

在这里插入图片描述

在这里插入图片描述
非叶子节点只存储key不存储data,每个节点存储的key个数更多,理论上来讲层数更低,搜索效率更高
叶子节点上存储了所有的key值和对应的data,搜索每个节点最后都要到叶子节点上。每一行搜索时间非常平均
叶子节点被串在了一个链表当中形成了一个有序链表,如果对所引树进行搜索只需要遍历有序链表即可。进行范围查询的时候,也可以直接遍历有序链表,效率更高

InnoDB主键和二级索引树

在这里插入图片描述
二级索引树
在这里插入图片描述
在这里插入图片描述
这也是为啥多列所引想要被用到必须用到第一列

聚集索引与非聚集索引

myisam
非聚集索引:
在这里插入图片描述
主键索引:
在这里插入图片描述
在这里插入图片描述

INNODB辅助索引与主键索引:

在这里插入图片描述

在这里插入图片描述

反之,innoDB的那种数据索引不分离的方式就算聚集索引

哈希索引

在这里插入图片描述
在这里插入图片描述
hash索引就是一个链式哈希表
在这里插入图片描述
特点:
在这里插入图片描述

INNODB的自适应哈希索引

在这里插入图片描述
原来是先找到二级索引,然后在通过二级索引找到主键再搜索得到数据页
现在通过一个hash索引直接找到数据页
在这里插入图片描述
自适应hash索引的维护也是要耗费性能的,不是所有情况下都可以提升二级索引的查询性能
在这里插入图片描述

在这里插入图片描述
索引学习漫画链接

索引和慢查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如何看更精确的时间:

在这里插入图片描述

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

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

相关文章

【计算机网络】数据链路层|封装成帧|透明传输|差错检测|PPP协议|CSMA/CD协议

目录 一、思维导图 ​ 二、数据链路层功能概述 1.数据链路层概述 2.数据链路层功能概述——封装成帧 3.数据链路层功能概述——透明传输 4.数据链路层功能概述——差错检测 三、数据链路层重要协议 1.数据链路层重要协议:PPP协议 2.数据链路层重要协议&#x…

LeetCode 刷题 [C++] 第141题.环形链表

题目描述 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&a…

2024数字中国创新大赛·数据要素赛道“能源大数据应用赛”正式上线!参赛指南请查收

近日,由国网福建电力承办的2024数字中国创新大赛能源大数据应用赛正式上线发布。赛事按照数字中国建设、能源革命的战略要求,围绕能源数据要素x、能源数字技术、能源商业模式等热点设置赛题,诚邀社会各界为加快建成新型电力系统出谋划策&…

DVWA 靶场之 Command Injection(命令执行)middlehigh

对于 middle 难度的 我们直接先看源码 <?phpif( isset( $_POST[ Submit ] ) ) {// Get input$target $_REQUEST[ ip ];// Set blacklist$substitutions array(&& > ,; > ,);// Remove any of the characters in the array (blacklist).$target str_rep…

VUE3搭载到服务器

1.搭建服务器 使用 Windows 自带的 IIS 作为服务器。 步骤如下&#xff1a;https://blog.csdn.net/qq_62464995/article/details/130140673 同时&#xff0c;上面的步骤中&#xff0c;还使用了 cpolar 将 IIS 本地网址映射到公共网址。 注&#xff1a; cpolar客户端&#xf…

java springmvc/springboot 项目通过HttpServletRequest对象获取请求体body工具类

请求 测试接口 获取到的 获取到打印出的json字符串里有空格这些&#xff0c;在json解析的时候正常解析为json对象了。 工具类代码 import lombok.extern.slf4j.Slf4j; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.we…

(全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF

研究生英语读写教程基础级教师用书PDF 研究生英语读写教程提高级教师用书PDF pdf下载&#xff08;完整版下载&#xff09; &#xff08;1&#xff09;研究生英语读写教程基础级教师用书PDF &#xff08;2&#xff09;研究生英语读写教程基提高级教师用书PDF

yolov9 瑞芯微芯片rknn部署、地平线芯片Horizon部署、TensorRT部署

特别说明&#xff1a;参考官方开源的yolov9代码、瑞芯微官方文档、地平线的官方文档&#xff0c;如有侵权告知删&#xff0c;谢谢。 模型和完整仿真测试代码&#xff0c;放在github上参考链接 模型和代码。 之前写过yolov8检测、分割、关键点模型的部署的多篇博文&#xff0c;y…

网络安全之内容安全

内容安全 攻击可能只是一个点&#xff0c;防御需要全方面进行 IAE引擎 DFI和DPI技术--- 深度检测技术 DPI --- 深度包检测技术--- 主要针对完整的数据包&#xff08;数据包分片&#xff0c;分段需要重组&#xff09;&#xff0c;之后对 数据包的内容进行识别。&#xff08;应用…

分享three.js和cannon.js构建Web 3D场景

使用 three.js&#xff0c;您不再需要花哨的游戏PC或控制台来显示逼真的3D图形。 您甚至不需要下载特殊的应用程序。现在每个人都可以使用智能手机和网络浏览器体验令人惊叹的3D应用程序。 这个惊人的库和充满活力的社区是您在浏览器、笔记本电脑、平板电脑或智能手机上创建游…

HTTP 的 multipart 类型

上一篇文章讲到 http 的 MIME 类型 http MIME 类型 里有一个 multipart 多部分对象集合类型&#xff0c;这个类型 http 指南里有讲到&#xff1a;MIME 中的 multipart&#xff08;多部分&#xff09;电子邮件报文中包含多个报文&#xff0c;它们合在一起作为单一的复杂报文发送…

System Verilog 要点概览

二进制 常量 格式&#xff1a;二进制位宽进制符号&#xff08;b:2;h:16;d:10&#xff09;数据 1b1 1b0 16habcd 4d10变量 logic a;//一位二进制 logic [3:0]b;//4位二进制 logic [31:0][31:0]c;//32*32位二进制组合/位绑定 {a, 1b1}//高位是a&#xff0c;低位是常数二进制…

go test用法(获取单元测试覆盖率)

go test用法&#xff08;获取ut覆盖率&#xff09; 为了提升系统的稳定性&#xff0c;一般公司都会对代码的单元测试覆盖率有一定要求。下面针对golang自带的测试命令go test做讲解。 1 命令 1.1 go test ./… &#xff08;运行当前目录及所有子目录下的测试用例&#xff09; …

读《Shape-Guided: Shape-Guided Dual-Memory Learning for 3D Anomaly Detection》

Chu Y M, Chieh L, Hsieh T I, et al. Shape-Guided Dual-Memory Learning for 3D Anomaly Detection[J]. 2023.&#xff08;为毛paperwithcode上面曾经的榜一引用却只有1&#xff09; 摘要 专家学习 无监督 第一个专家&#xff1a;局部几何&#xff0c;距离建模 第二个专家&…

【React源码 - 调度任务循环EventLoop】

我们知道在React中有4个核心包、2个关键循环。而React正是在这4个核心包中运行&#xff0c;从输入到输出渲染到web端&#xff0c;主要流程可简单分为一下4步&#xff1a;如下图&#xff0c;本文主要是介绍两大循环中的任务调度循环。 4个核心包&#xff1a; react&#xff1a;…

数据结构 队列

一定义 1.1概述&#xff1a; 队列只允许在一端进行插入操作&#xff0c;而在另一端进行删除操作的线性表 特点&#xff1a;队列是先进先出的线性表 允许插入的一端称为队尾&#xff0c;允许删除的一端是队头 这里我们就介绍链式的 1.2 建立队列 这里说一句 其实不管是栈还…

php基础学习之错误处理(其一)

一&#xff0c;错误处理的概念 错误处理指的是系统(或者用户)在执行某些代码的时候&#xff0c;发现有错误&#xff0c;就会通过错误处理的形式告知程序员&#xff0c;俗称报错 二&#xff0c;错误分类 语法错误&#xff1a;书写的代码不符合 PHP 的语法规范&#xff0c;语法错…

【医学影像】LIDC-IDRI数据集的无痛制作

LIDC-IDRI数据集制作 0.下载0.0 链接汇总0.1 步骤 1.合成CT图reference 0.下载 0.0 链接汇总 LIDC-IDRI官方网址&#xff1a;https://www.cancerimagingarchive.net/nbia-search/?CollectionCriteriaLIDC-IDRINBIA Data Retriever 下载链接&#xff1a;https://wiki.canceri…

基于springboot+vue的编程训练系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

斯元Z-ONE-China Cybersecurity Tech Landscape·中国网络安全全景图-百度网盘下载

面向全球&#xff0c;斯元Z-ONE正式发布首版「China Cybersecurity Tech Landscape中国网络安全全景图」。 为了提升海外市场对中国网络安全行业的全局认识&#xff0c;方便国际客户及合作伙伴了解中国网络安全科技的赛道分布和国内外厂商对标&#xff0c;助力中国网安厂商出海…