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可…

利用COT思维链技术和Prompt提示语工程与微调后的大模型集成方式

COT思维链技术和Prompt提示语工程是通过对模型的输入进行设计和优化,以引导模型生成期望的输出。 COT思维链技术,是一种通过梳理和串联关键信息,形成逻辑严谨、条理清晰的思维链。在使用大型语言模型时,我们可以将这种思维链的关…

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.关于规则 完整的解决方案现…

WordPress插件无法安装一直失败的原因和解决办法

WordPress建站程序之所以如此受欢迎,最大的原因可能就是拥有丰富多样的插件,可以实现任何想要的功能, 如联系表单、社交媒体分享按钮、搜索引擎优化、自动备份数据库、自动发布文章到社交媒体平台等,但是我们 在安装WordPress插件…

Redis应用-缓存

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

使用正确的js编写的正则表达式,但是无法匹配

其实只是自己感觉表达式正确而已,其实是错误的。 先直接说答案,.语法无法匹配\n(点语法无法匹配\n),不知道大家有没有恍然大悟。 这里举例子介绍一下: 我现在有一个字符串,例如12!!333!!&…

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

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

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

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

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

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

MySQL四 | 约束

目录 约束的种类 添加外键约束 在创建表时添加外键 创建表之后添加外键 更新/删除外键约束的规则 删除外键 更新指令 约束是作用于表中字段上的规则,用于限制存储在表中的数据,可以保证数据库中数据的正确,有效性和完整性。 约束的种…

Unity渲染Stats分析

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

23:kotlin类和对象 -- 内联值类(Inline value classes)

有时,将一个值包装在一个类中可以创建一个更具领域特定类型的类。然而,由于额外的堆分配,这会引入运行时开销。此外,如果包装的类型是原始类型,性能损失是显著的,因为原始类型通常由运行时进行了大量优化&a…

【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…

面试被问到 HTTP和HTTPS的区别有哪些?你该如何回答~

HTTP和HTTPS的区别有哪些&#xff0c;主要从以下几个方面来说&#xff1a; 1.安全性 HTTP和HTTPS是两种不同的协议&#xff0c;它们之间最主要的区别在于安全性。HTTP协议以明文方式发送内容&#xff0c;不提供任何方式的数据加密&#xff0c;容易被攻击者截取信息。 HTTPS则在…

ICO 图标

ICO是一种图标文件格式&#xff0c;图标文件可以存储单个图案、多尺寸、多色板的图标文件。一个图标实际上是多张不同格式的图片的集合体&#xff0c;并且还包含了一定的透明区域。 它是图标文件格式的一种&#xff0c;可以存储单个图案、多尺寸、多色板的图标文件。 图标是具…

深入解析Socks5代理技术:保障隐私与网络安全的利器

Socks5代理&#xff0c;作为一种网络通信协议&#xff0c;广泛应用于网络安全、隐私保护以及访问控制等领域。本文将深入探讨Socks5代理的技术原理、特性以及在实际应用中的重要性。 1. Socks5代理的基本原理 Socks5代理是一种开放式协议&#xff0c;主要用于客户端与服务器之…

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

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