mysql进阶-sql调优

概述

优化索引

在MySQL初阶的课程中已经介绍了索引,我们知道InnoDB存储引擎使⽤B+树作为索引默认的数据结构来组织数据,为频繁查询的列建⽴索引可以有效的提升查询效率,那么如何利⽤索引编写出⾼效的SQL查询语句?以及如何分析某个查询是否⽤到了索引?当前的索引还有没有优化的空间?下⾯我们来讨论关于索引和优化相关的问题。

关于mysql索引的理解,除了自动创建的主键索引是将所有的字段都放在索引树当中,其他的索引都只有索引字段和主键,那么其他的索引检索到要查询的数据后还是需要根据存储的主键id去主键索引去查找全部的数据的

使用主键查询

使用非索引查询

压测工具

执行计划EXPLAIN

执行计划并不会真的去执行sql语句。

执行计划字段说明

id列

select_type列

table列

partitions列

type列

possible_keys列

key列

key_len列

ref列

rows列和filtered列

extra列

type列详解

system

const

eq_ref

在多表链接的场景,两个唯一值一一对应相互关联的场景。

ref

fulltext

ref_or_null

index_merge

unique_subquery和index_subquery

range

index

all

只有单个查询当中没有使用的列才算是全表扫描,先使用索引查询后再次查询的不能算。

extra列详解

USing Temporary

Using filesort

当内存不足的时候就会申请临时文件,这是比内存更严重的情况,io效率极低。

使用了索引来进行排序就不会发生这种情况了。

usingWhere

如果通过了索引树的话,那进行的就不是全表扫描,而扫描的是索引树。

using index

表示出现了索引覆盖,效率极高。

索引覆盖

回表查询

优化Select

where字句优化

高效查询示例

范围优化

优化器执行过程

多部索引范围访问

索引下推

外连接优化

is null优化

查询b列有索引走了索引,查询c列没有索引就全表扫描,也有可能走了索引还是全表扫描

order by优化

group by优化

索引失效

没有遵守最左原则

where中有or且其中一个条件没有索引

因为or条件除非第一个条件满足了,不然基本上是要找的,与其走一次索引加一次全表扫描,不如只走一次全表扫描。

复合索引中第⼀个使⽤范围查询的条件或不以%开头的模糊查询之后的列不使⽤索引

Like 查询以 % 开头

隐式转换,⽐如字符串没有加引号

Where ⼦句中有表达式或函数

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

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

相关文章

海量数据处理问题详解

1.从a,b两个文件各存放50亿个url(每个url大小为64B),如何在内存为4G中查找a,b中相同的url 计算各文件存放大小:50亿*64B 大约为320G,而内存只有4G,显然存放不下,此时我们…

AI 记忆管理系统:工程实现设计方案

本文档为《从“健忘”到“懂我”:构建新一代AI记忆系统》中所述理念的详细工程实现方案。它将聚焦于技术选型、模块设计、数据流转和核心算法,为开发团队提供清晰的落地指引。 1. 系统架构与技术选型 为实现分层记忆与读写分离的设计理念,我们…

Linux驱动学习day26天(RS485)

一、原理通过芯片将232信号转换成485信号,485表示0和1的方法:Va - Vb 的电压差在2~6V时表示1,Va - Vb 的电压差在-2~-6V时表示0。这样传输不容易受到干扰,并且传输距离长。我们需要做的事情就是发送:使能DE(driver ena…

从零构建TransformerP1-了解设计

欢迎来到啾啾的博客🐱。 记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。 有很多很多不足的地方,欢迎评论交流,感谢您的阅读和评论😄。 目录引言1 概念回顾1.1 序列任务1.1.1 将序列变成模型…

JVM 终止机制详解:用户线程与守护线程

用户线程未执行完是否会阻止 JVM 终止?答案是:取决于线程类型。让我详细解释: 核心规则 #mermaid-svg-bg5xpyMAeRWNGGk2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bg5xpyMAe…

Linux Vim 常用快捷键

Vim中最常用的快捷键,熟练掌握它们可以大大提高编辑效率。移动光标h- 左移j- 下移k- 上移l- 右移w- 移动到下一个单词开头b- 移动到上一个单词开头e- 移动到单词末尾0- 移动到行首$- 移动到行尾gg- 移动到文件开头G- 移动到文件末尾:n- 跳转到第n行插入模式i- 在光标…

【Bellman负环】Cycle Finding

题目翻译给定一个有向图,你的任务是判断它是否包含负环,并给出这样一个环的示例。输入 第一行输入两个整数 n 和 m:分别表示节点数和边数。节点编号为 1, 2, ..., n。 接下来 m 行描述边,每行有三个整数 a, b, c:表示存…

数据结构(六):树与二叉树

一、树的基本概念树的定义树(Tree)是由 n(n ≥ 0)个节点组成的有限集合,当 n 0 时称为空树。非空树中:有且仅有一个根节点(Root);其余节点可以划分为若干个互不相交的子…

《Linux运维总结:Shell 脚本日志输出工具》

总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:Linux运维实战总结 一、Shell 脚本日志输出工具 1、提供的 logger() 函数是一个非常实用的 Shell 脚本日志输出工具,它支持带时间戳和…

select ... for update阻塞

总结阻塞规则:当前事务持有的锁 (来自 SELECT ... FOR UPDATE)其他事务尝试的操作是否会被阻塞?原因排他锁 (X Lock) 在行 R 上SELECT ... FROM ... (普通查询)否读快照 (MVCC),不需要锁排他锁 (X Lock) 在行 R 上SELECT ... FROM ... FOR UP…

LangChain4j终极指南:Spring Boot构建企业级Agent框架

LangChain4j Spring Boot 构建企业级 Agent 框架深度指南(3000字终极版)一、架构设计:面向未来的企业级智能体系统1.1 分层架构设计1.2 核心组件职责1.3 企业级特性设计二、核心模块深度实现2.1 智能体协作引擎(LangGraph4j高级应…

前端基础之《Vue(29)—Vue3 路由V4》

一、安装1、命令cnpm install vue-router42、配置映射为src路径(1)安装对应配置cnpm install types/node(2)配置vite.config.tsimport { defineConfig } from vite import vue from vitejs/plugin-vue import * as path from &quo…

9.2 通过DuEDrawingControl把eDrawing嵌入到C#中显示

本文介绍如何通过DuEDrawingControl控件在C#的WPF中进行3D的显示。 DuEDrawingControl在实际应用中可以应用于以下场景: 1.CAD文件预览:在Winform或WPF应用程序中,用户可以预览装配文件、工程图文件等,方便进行设计和审核。 2.打印管理:控件支持打印文件的管理,用…

《Vuejs设计与实现》第 13 章(异步组件和函数式组件

目录 13.1 异步组件的问题与解决方法 13.2 异步组件的实现原理 3.2.1 封装 defineAsyncComponent 函数 13.2.2 超时与 Error 组件 13.2.3 延迟与 Loading 组件 13.2.4 重试机制 13.3 函数式组件 13.4 总结 在第12章,我们深入探讨了组件的基本含义和实现方式…

Python的七大框架对比分析

谈到“Python 七大框架”时,通常指 Django、Flask、FastAPI、Tornado、Sanic、AIOHTTP 和 Pyramid 这七位“常驻嘉宾”。它们各有气质,适合的场景也截然不同。1. DjangoDjango 像一辆全副武装的重型越野:出厂就配好 ORM、后台管理、权限、缓存…

Redis中String数据结构为什么以长度44为embstr和raw实现的分界线?

​ 一道常见Redis面试题。 ​ 在Redis的String数据结构中,当字符串的实际长度小于44且包含非整数字符时底层编码方式为embstr。当超过44时使用raw底层编码方式。 ​ 那么为什么要以字符串的长度44为分界线呢? 信息一 ​ 首先要分析embst…

告别人工巡查,校园空调管理迈入智能物联高效时代

在“双碳”战略深入推进和智慧校园建设加速落地的背景下,学校空调的用电管理已经不再是“开与关”的简单问题,而是涵盖了能效优化、安全保障、智慧化管理的综合课题。蓝奥声科技凭借LPIOT低功耗物联网、ECWAN边缘协同网络等优势技术,打造出面…

Access开发右下角浮窗提醒

Hi,大家好呀!感觉又有很长一段时间没有给大家更新内容了,最近一直在忙,给大家承诺的框架、视频教程、直播等等感觉又要跳票了,嘿嘿,但大家还是不要急,莫催我,我会慢慢都更新出来的&a…

AI自进化,GPU性能翻三倍——CUDA-L1开启自动优化新范式

最近看到一篇让我挺震撼的文章,来自 DeepReinforce 团队发布的一个新框架——CUDA-L1。说实话,刚看到标题说“AI 让 GPU 性能提升 3 倍以上”,我心里是有点怀疑的。毕竟我们搞科研的都知道,这种宣传语很多时候水分不小。但当我静下…

深入理解 Java AWT Container:原理、实战与性能优化

以 Container 为核心梳理 AWT 容器体系与事件模型,提供可运行的纯 AWT 示例(含 Panel、Frame、Dialog、ScrollPane 正确用法),并给出常见问题与性能优化建议。 Java AWT, Container, 容器, 布局管理器, 事件驱动, ScrollPane, 性…