MySQL中的索引①——索引介绍、结构、分类、语法、SQL性能分析

目录

目录

索引概述-->

介绍--->

优缺点--->

索引结构-->

​编辑

存储引擎支持情况--->

BTree--->

B+Tree--->

Hash--->

Hash特点--->

思考题

索引分类-->

InnoDB存储引擎中--->

聚集索引--->

二级索引--->

执行过程--->

思考题

索引语法-->

代码示范--->

SQL性能分析-->

SQL执行频率--->

慢日志查询--->

代码演示--->

profile详情--->

代码演示--->

explain执行计划-->

代码演示--->


索引概述-->

介绍--->

优缺点--->


索引结构-->

存储引擎支持情况--->

BTree--->

每当节点到5个Key时,中间值向上分裂,左边小于中间值,右边大于中间值

B+Tree--->

MySQL优化处理--->

BTree的基础上,分裂的同时将本身放在叶子节点形成链表,左边小于中间值,右边大于等于中间值

Hash--->

Hash特点--->

思考题


索引分类-->

InnoDB存储引擎中--->

聚集索引--->

此处叶子节点row存放的就是每一行的数据

二级索引--->

此处叶子节点存放id

执行过程--->

先在二级索引中,拿'Arm与Lee'比较,小于'Lee',继续找左边

与'Geek'比较,小于'Geek',继续找左边

找到'Arm'存储的id为10

此时在聚集索引中再通过id=10找到对应的行数据返回

这样的查询方式也叫回表查询

思考题

解答-->

select * from user where id = 10;效率高

原因是直接进行聚集索引查询,省去了二级索引的查询

高度每+1,key = 原key * 1171 * 16


索引语法-->

代码示范--->

-- 创建数据库
CREATE DATABASE IF NOT EXISTS itcast DEFAULT CHARSET utf8mb4 ;use itcast;-- 准备表和数据 id为主键
CREATE TABLE tb_user(id int primary key auto_increment COMMENT 'id',name varchar(10) COMMENT '姓名',phone char(11) COMMENT '电话',email varchar(20) COMMENT '邮箱',profession varchar(10) COMMENT '专业',age int COMMENT '年龄',gender int COMMENT '性别',status int COMMENT '状态',createtime DATETIME COMMENT '入职时间'
) COMMENT '用户表';INSERT INTO tb_user VALUES (1,'吕布','17799990000','lvbu666@163.com','软件工程',23,1,6,'2001-02-02 00:00:00'),(2,'曹操','17799990001','caocao666@qq.com','通讯工程',33,1,6,'2001-03-05 00:00:00'),(3,'赵云','17799990002','177999908139.com','英语',34,1,2,'2002-03-02 00:00:00'),(4,'孙悟空','17799990003','17799990@sina.com','工程造价',54,1,0,'2001-07-02 00:00:00'),(5,'花木兰','17799990004','19980729@sina.com','软件工程',23,2,1,'2001-04-22 00:00:00');-- 需求
-- 1.name字段为姓名字段,该字段的值可能会重复,为该字段创建索引
create index idx_user_name on tb_user(name);-- 2.phone手机号字段的值,是非空,且唯一的,为该字段创建唯一索引
create unique index idx_user_phone on tb_user(phone);-- 3.为profession、age、status创建联合索引
create index idx_user_pro_age_sta on tb_user(profession,age,status);-- 4.为email建立合适的索引来提高查询效率
create index idx_user_email on tb_user(email);-- 查询索引
show index from tb_user;

结果--->


SQL性能分析-->

SQL执行频率--->

慢日志查询--->

代码演示--->

查询慢日志查询--->

使用vi编辑器配置信息--->此时状态为OFF关闭

返回后重新启动mysql服务器--->

再次查询--->此时状态为ON打开

查找存放慢日志文件的位置--->此时文件中存放的只有一些基本信息

查询1000w条数据--->出现慢查询日志

profile详情--->

使用-->

代码演示--->

启用profiling--->

进行三个查询操作--->

通过profiles操作查看每条sql的耗时基本情况--->

通过profiles操作查看sql语句各个阶段的耗时情况--->

通过profiles操作查看sql语句各个阶段cpu的使用情况--->

explain执行计划-->

explain执行计划各字段含义:

代码演示--->

查看sql语句的执行计划--->

id值相同--->

id值不同--->


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

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

相关文章

SpringBootAdmin

SpringBootAdmin 文章目录 SpringBootAdmin创建SpringBootAdmin服务端创建SpringBootAdmin客户端启动应用 总结 github地址 https://github.com/codecentric/spring-boot-admin 可以查到所有的版本号 创建SpringBootAdmin服务端 创建springBoot项目的时候,在ops选项…

外贸平台获客技巧分享!(个人经历)

作为一名从事外贸行业多年的专业人士,我深知在竞争激烈的市场中获取客户的重要性,今天,我想与大家分享一些我在外贸平台上获客的技巧和经验,希望能够帮助到需要的人。 首先,我们需要明确一点,外贸平台是一…

一键抠图|3个智能AI抠图软件实现抠图自由!

听说你对如何利用AI抠图技术去除白色背景感兴趣?设想一下,你有一张某人站在白色背景前的照片,而你只希望能留下这个人物。在过去,你可能需要花费大量时间和精力手动进行抠图。但现在,AI技术来拯救你了!AI可…

2024年MCM/ICM美国大学生数学建模竞赛备战指南

01 2024美赛基本要求 1.关于时间(北京时间) 比赛开始时间: 2024年2月2日6:00至 2024年2月6日9:00 提交截止时间:2024年2月6日10:00 结果发布时间:结果将于2024年5月31日或之前发布 2.关于规则 完整的解决方案现…

Redis应用-缓存

目录 什么是缓存 使用redis作为缓存 缓存的更新策略 通用的淘汰策略 redis内置的淘汰策略 缓存预热 缓存穿透 缓存雪崩 缓存击穿 什么是缓存 缓存(cache)是计算机中一个经典的概念,在很多的场景中都会涉及到. 核心思路就是把一些常用的数据放到触手可及(访问速度更快…

用OpenCV与MFC写一个图像格式转换及简单处理程序

打开不同格式的图形文件,彩色装灰度图像、锐化、高斯滤波、边界检测及将其存储为需求格式是图像处理的最基本的操作。如果单纯用MFC编程,是一个令人头痛的事情,有不少的代码量。可用OpenCV与MFC编程就变得相对简单。下面来详细演示这一编程操…

敏捷:应对软件定义汽车时代的开发模式变革

随着软件定义汽车典型应用场景的落地,汽车从交通工具转向智能移动终端的趋势愈发明显。几十年前,一台好车的定义主要取决于高性能的底盘操稳与动力系统;几年前,一台好车的定义主要取决于智能化系统与智能交互能否满足终端用户的用…

五肽-13|提亮肤色,美白肌肤

五肽-13 INCI名称:五肽-13 说明: 五肽-13是一种合成肽,由丙氨酸、精氨酸、赖氨酸、脯氨酸和缬氨酸组成 功能: 五肽-13起到增白剂的作用 应用程序: 提亮和美白

Unity渲染Stats分析

文章目录 前言一、Stats二、我们主要看渲染状态分析1、FPS2、其他状态信息3、DrawCall4、Batch5、Setpass Call6、在Unity中弱化了DrawCall的概念,我们主要看 Batch 和 Setpass Call 三、使用 Batching(合批) 降低 Batch (渲染批次…

【c】杨辉三角

下面介绍两种方法 1.利用上面性质的第五条&#xff0c;我们可以求各行各列的组合数 2.利用上面性质的第7条&#xff0c;我们可以用数组完成 下面附上代码 1. #include<stdio.h> void fact(int n ,int m )//求组合数 {long long int sum11;long long int sum21;int a…

LTD254次升级 | 订单批打印 • 官网搭“抖音“ • 合伙人添权益

1、 商城订单支持打印功能&#xff1b; 2、 H5/小程序商城新增一款首页样式&#xff1b; 3、 社区中视频支持抖音方式浏览&#xff1b; 4、 极速官微优化管理页面布局、优化海报分享样式&#xff1b; 5、 新增一款轮播模块&#xff1b; 6、 已知问题修复与优化&#xff1b; 01 …

<sa8650>Safety Monitor 之 API介绍 (第二部分)

&#xff1c;sa8650&#xff1e;Safety Monitor 之 API介绍 4.由APSS安全监视器支持的接口4.1数据结构文件4.1.1 struct sm_handle4.1.2 struct safety_msg_initial_fault4.1.3 struct safety_msg_notify_fault 4.2 Enumeration documentation4.2.1 safety_fault_subsystem4.2…

前端:让一个div悬浮在另一个div之上

使用 CSS 的 position 属性和 z-index 属性 首先&#xff0c;将第二个 div 元素的 position 属性设为 relative 或 absolute。这样可以让该元素成为一个定位元素&#xff0c;使得后代元素可以相对于它进行定位。 然后&#xff0c;将要悬浮的 div 元素的 position 属性设为 ab…

分布式锁常见实现方案

分布式锁常见实现方案 基于 Redis 实现分布式锁 如何基于 Redis 实现一个最简易的分布式锁&#xff1f; 不论是本地锁还是分布式锁&#xff0c;核心都在于“互斥”。 在 Redis 中&#xff0c; SETNX 命令是可以帮助我们实现互斥。SETNX 即 SET if Not eXists (对应 Java 中…

Redis7--基础篇7(哨兵sentinel)

1. 关于哨兵的介绍 1、监控redis运行状态&#xff0c;包括master和slave&#xff08;主从监控&#xff09; 2、哨兵可以将故障转移的结果发送给客户端&#xff08;消息通知&#xff09; 3、当master down机&#xff0c;能自动将slave切换成新master&#xff08;故障转移&#…

软件测试理论

含义&#xff1a;使用技术手段来验证软件是否满足使用需求 目的&#xff1a;减少软件缺陷&#xff0c;保障软件质量 单元测试&#xff1a;对模块/函数进行的测试 集成测试&#xff1a;把多个模块/函数组装到一起进行的测试 系统测试&#xff1a;计算机程序结合外设网络等其…

springboot077基于SpringBoot的汽车票网上预订系统

springboot077基于SpringBoot的汽车票网上预订系统 成品项目已经更新&#xff01;同学们可以打开链接查看&#xff01;需要定做的及时联系我&#xff01;专业团队定做&#xff01;全程包售后&#xff01; 2000套项目视频链接&#xff1a;https://pan.baidu.com/s/1N4L3zMQ9n…

流量异常-挂马造成百度收录异常关键词之解决方案(虚拟主机)

一.异常现象&#xff1a;流量突然暴涨&#xff0c;达到平时流量几倍乃至几十倍&#xff0c;大多数情况下因流量超标网站被停止。 二.排查原因&#xff1a; 1.首先分析web日志&#xff1a;访问量明显的成倍、几十倍的增加&#xff1b;访问页面不同&#xff1b;访问IP分散并不固…

err_connect_length_mismatch错误

原因: 官网解释为&#xff1a;err_content_length_mismatch:错误的内容长度不匹配&#xff08;请求的Heather 里content-length长度与返回的content-length不一致&#xff09; 问题截图: 分析: 由截图可见,静态资源加载错误,提示err_content_length_mismatch,经排查,网络页签…

“新KG”视点 | 知识与大模型融合技术在电信领域应用探索

OpenKG 大模型专辑 导读 知识图谱和大型语言模型都是用来表示和处理知识的手段。大模型补足了理解语言的能力&#xff0c;知识图谱则丰富了表示知识的方式&#xff0c;两者的深度结合必将为人工智能提供更为全面、可靠、可控的知识处理方法。在这一背景下&#xff0c;OpenKG组织…