【MySQL优化】快速入门慢SQL优化

news2025/1/18 20:24:46

MySQL

B+树结构(二叉排序树)

image-20230418022500284

索引

SQL优化,主要就是在优化索引

索引:相当于书的目录

索引:index是帮助MYSQL高效获取数据的数据结构。索引是数据结构(树:B树(默认)、Hash树…)

索引的弊端:

1.索引本身很大,可以存放在内存/硬盘(通常为硬盘)

2.索引不是所有情况均适用:a.少量数据b.频繁更新的字段c.很少使用的字段

3.索引会降低增删改的效率(增删改 查)

优势:

1提高查询效率(降低IO使用率)

2.降低CPU使用率(…order by age desc, 因为B树索引本身就是一个排好序的结果)

主键索引(primary key)

唯一索引(unique index)

单值索引(index)

复合索引

create 索引类型 索引名 on 表名(表字段)

alter table 表名 索引类型 索引名(表字段)

explain

image-20230417234401649

id

值相同,从上往下顺序执行,值不同,值越大的先执行

子连接,先执行最内括号里的

多表连接,表行数小的先执行

(原因:笛卡尔积,2 3 4,2 * 3 * 4 = 6 * 4 ,3 * 4 * 2 = 12 * 2)

6 < 12 效率高

select_type

查询类型

PRIMARY:包含子查询SQL中的主查询(最外层的)

SUBQUERY:包含子查询SQL中的子查询(非外层的)

SIMPLE:简单查询(不包含子查询、union)

DERIVED:衍生查询(使用到了临时表)

​ a. 在from子查询中只有一张表(select temp.xx from (selet …) temp)

​ b. 在from子查询中,如果有table1 union table2 ,则table1 就是 derived,table2就是union

UNION:上例

UNION RESULT:两张表

table

查询的是哪张表

type

索引类型、类型

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery

System > const > eq_ref > ref > range > index > all

首先得有索引才能做优化,不然都是all

system、const只是理想情况,大多数是优化到ref、range级别

system

只有一条数据的系统表

或者

衍生表只有一条数据的主查询

子表只有一条数据

const

仅仅只能查到一条数据的SQL,用于primary key 或unique index

eq_ref

唯一性索引(unique,primary),对每个索引值,返回匹配唯一的行数据(有且只有1个,不能多,不能少)

3行对应3行,索引值对应

3对1 3对 4 不行

where 后面的字段就是查询的索引值

ref

非唯一性索引,对每个索引值,返回匹配所有行(有0,或多个)

range

范围查询,查询指定范围的所有行,where后面是一个范围查询

(between,>,<,>=,<=,in(跟数据量有关,大于数据量一半all))

index

查询全部索引中的数据

查询字段是索引,只需要扫描索引列

all

查询全部表中的数据

查询字段不是索引,要扫描全表

possible_key

可能用到索引键(表字段),可能会有多个,是一种预测

key

实际用到的索引键(表字段)

key_len

索引的长度

作用:判断复合索引是否被完全使用

(a,b,c)三个索引分别多少varchar(10)

utf8:varcahr 1字符=3字节

三个都使用是30、两个20

如果索引字段可以为空,那么len会+1,MySQL会使用一个字节用于标识

复合索引遵循最左匹配原则,在第一个索引能查到后,后面的索引就不起用了

编码

utf8:1个字符3个字节 (null是用一个字节标识,varchar可变长度用2个字节标识)

gbk:1个字符2个字节

latin:1个字符1个字节

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

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

相关文章

Spring Cloud Config配置服务及那些你不知道的坑

目录 1、为什么选择Spring Cloud Config 1.1 集中式管理 1.2 动态修改配置 2、Spring Cloud Config 简介 3、服务端配置 3.1 添加依赖 3.2 开启服务注册 3.3 添加YML配置 3.4 创建远程分支及Profile配置文件 3.5 启动并测试服务 4、客户端配置 4.1 添加依赖 4.2 开…

2.3-6循环链表

原理的单链表和循环单链表的区别&#xff1a; 初始化循环单链表时&#xff0c;使头节点next指针指向头节点。 判断循环单链表是否为空。 对比&#xff1a; 单链表&#xff1a;if(L->next NULL) 双链表&#xff1a;if(L->nextL) 判断循环单链表的结点p是否为表尾结点…

汇聚音视频新能量 探索行业新蓝海

视频行业卷成红海&#xff0c;如何突破瓶颈&#xff0c;去探索行业的新蓝海&#xff0c;本次LiveVideoStackCon 2022北京站邀请到快手高级副总裁、研发线负责人于冰&#xff0c;以《汇聚音视频新能量&#xff0c;探索行业新蓝海》为题&#xff0c;从视频行业趋势和痛点出发&…

类ChatGPT模型ChatGLM-b6本地部署实践

国外ChatGPT火爆持续&#xff0c;前一段时间百度发布“文心一言”还没有全面放开测试&#xff0c;这不阿里“通义千问”又悄然而至&#xff0c;国内大模型AI产品渐渐浮出水面。早在2022年8月份时候清华大学的对话语言模型ChatGLM-6B就发布并开源&#xff0c;本文简要介绍ChatGL…

flex弹性布局详细介绍

这里提供一个可以边学习边玩的flex学习网站&#xff1a;弹性盒青蛙 目录一、Flex布局是什么&#xff1f;二、属性1. justify-content 属性2. align-items属性3. flex-direction属性4. order属性5. align-self属性6. flex-wrap 属性7. flex-flow属性8. align-content属性三、综合…

测试新人必看,软件测试测试流程

不同类型的软件产品测试的方式和重点不一样&#xff0c;测试流程也会不一样。同样类型的软件产品&#xff0c;不同的公司所制定的测试流程也会不一样。虽然不同软件的详细测试步骤不同&#xff0c;但它们所遵循的最基本的测试流程是一样的。 1分析测试需求 2制定测试计划 3设…

Python opencv 实现图像平移及旋转

Python opencv 实现图像平移及旋转 仿射变换是一种仅在二维平面中发生的几何变形&#xff0c;变换之后的图像仍然可以保持直线的 “平直性” 和 “平行性”&#xff0c;也就是说原来的直线变换之后还是直线&#xff0c;平行线变换之后还是平行线。图像平移和图像旋转是常见的放…

IMX6ULL-IRQ中断之添加中断向量表

一. 中断向量表 中断向量表是存放中断向量的表。中断服务程序的入口地址或存放中断服务程序的首地址成为中断向量&#xff0c;因此中断向量表是一系列中断服务程序入口地址组成的表。当有中断事件发生时&#xff0c;处理器通过中断向量表进入相关的中断服务程序处理事件。 二.…

自动化测试(二):QTP验证点

1 、程序自带验证点 自带验证点&#xff1a;图形界面insert -> checkpoint Standard Checkpoint 标准验证&#xff1a;用于检查测试对象的属性 Text Checkpoint 文本验证&#xff1a;用于检查文本字符串是否在应用程序中的适当位置出现 Text Area Checkpoint文本区域验…

饮用水中的六价铬去除工艺详解

铬是人体必需的微量元素&#xff0c;天然水不含铬&#xff0c;海水中铬的平均浓度为0.05μg/L&#xff0c;饮用水中铬含量更低。 铬在水中主要以三价和六价形式存在&#xff0c;三价的铬是对人体有益的元素&#xff0c;而六价铬是有毒的。由于其毒性之高&#xff0c;已被国家列…

Smith预估器

Smith预估器主要针对存在大滞后的系统,作用延迟和反馈延迟环节的控制,Smith预估器的另一篇文章,请参看下面的博客文章: 博途1200/1500PLC Smith预估器(补偿器)算法实现(FB)_RXXW_Dor的博客-CSDN博客在写这篇文章之前写过一篇"大林控制算法",大家可以参看下面这…

免费的包噪音网站分享

免费的包噪音网站分享 现代生活中&#xff0c;噪音扰人&#xff0c;影响健康和情绪。白噪音可以为人们提供放松心情、提高睡眠质量和专注力的帮助。 现在有很多免费的白噪音网站可以任意使用和分享&#xff0c;包括海浪声、雨声、蝉鸣声等等&#xff0c;非常适合在办公室、家里…

windows 下安装 ffmpeg

介绍一下我的环境及开发软件版本 windows phpstudy php7.3 进入安装步骤 1.下载windows系统的FFMpeg 下载链接&#xff1a; http://ffmpeg.org/download.html ps: 这里有各种版本了 &#xff08;未使用这个版本&#xff09;git地址&#xff1a;https://github.com/BtbN/…

数据结构初阶 - 汇总

-0- 数据结构前言 什么是数据结构 什么是算法 数据结构和算法的重要性-1- 时间复杂度和空间复杂度 &#x1f449;数据结构 -1- 时间复杂度和空间复杂度 | C 算法效率 时间复杂度大O的渐进表示法eg 空间复杂度 常见复杂度对比OJ 消失的数组 轮转数组-2- 顺序表 与 链表 &am…

反射之构造方法和成员变量

什么是反射 反射允许对成员变量&#xff0c;成员方法和构造方法的信息进行编程访问。 Class类中获取构造方法的方法 Constructor getConstructors&#xff08;&#xff09; Constructor getDeclaredConstructors&#xff08;&#xff09; Constructor…

[STM32F103C8T6]看门狗

看门狗&#xff1a; 在由单片机构成的微型计算机系统中&#xff0c;由于单片机的工作常常会受到来自外界电磁场的干扰&#xff0c;造 成程序的跑飞&#xff0c;而陷入死循环&#xff0c;程序的正常运行被打断&#xff0c;由单片机控制的系统无法继续工作&#xff0c;会 造成整个…

LeetCode 1206. 设计跳表

LeetCode 1206. 设计跳表 难度&#xff1a;hard\color{red}{hard}hard 题目描述 不使用任何库函数&#xff0c;设计一个 跳表 。 跳表 是在 O(log(n))O(log(n))O(log(n)) 时间内完成增加、删除、搜索操作的数据结构。跳表相比于树堆与红黑树&#xff0c;其功能与性能相当&am…

【区块链】【FISCO】WeIdentity

什么是 WeIdentity&#xff1f; 官方的说法&#xff1a;去中心化身份标识解决方案。其实说白了就是互联网上每个人都拥有自己数字身份&#xff0c;并且这个身份是唯一且不可篡改的。 WeIdentity要解决的问题就是用来解决数字身份验证的问题。传统互联网身份验证的方式通常用账…

将ip地址中的每一个字符串按照分隔符提取

1、算法思想 该题采用 c 中的 string 完成比较方便 对于字符串 string str1“hehehe:hahaha:xixixi:lalala” 定义 int pos 0&#xff0c;记录子串的初始位置 在循环语句中重复执行以下操作&#xff1a; &#xff08;1&#xff09;、定义 int ret str1.find(":",…

OpenAI-ChatGPT最新官方接口《聊天交互多轮对话》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(二)(附源码)

目录Chat completions Beta 聊天交互前言Introduction 导言Response format 提示格式Managing tokensCounting tokens for chat API calls 为聊天API调用标记计数Instructing chat models 指导聊天模型Chat vs Completions 聊天与完成FAQ 问与答其它资料下载Chat completions B…