mysql之sql的优化方案(重点)
1、全字段匹配是最棒的
假如一个Staffs 这个表,将 name,age ,pos 组合成了一个联合索引,在where条件下,能够使用到的索引越多越好。
EXPLAIN SELECT * FROM staffs WHERE NAME = 'July';
EXPLAIN SELECT * FROM staffs WHERE NAME = 'July' AND age = 25;
EXPLAIN SELECT * FROM staffs WHERE NAME = 'July' AND age = 25 AND pos = 'dev';

2、最佳左前缀法则


创建索引的时候, name --> age --> pos
在使用索引的时候,也必须按照这个顺序来,不能少,顺序可以乱。

3、索引列上不计算
3、不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描。

4、不能使用索引中范围条件右边的列
Explain select * from staffs where name='' and age >25 and pos='';
age > 25 这个 age 这个索引也用到了,但是 pos这个字段的索引没有起作用,失效了。

5、尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select *

以上的SQL语句,一样的where条件,因为 select 后面的字段不一样,sql的执行效率就不一样,因为第二个语句将 * 改为了三个索引字段,使用到了覆盖索引。
6、使用不等于(!= 或者<>)的时候无法使用索引

7、注意字段的null值和 not null 对sql的影响
第一种情况,name 是一个索引,name 字段允许为null

第二种情况:name 是一个索引,name 字段不允许为null

总结就是:索引字段,这个字段是否为null 对于sql的好坏有一定的影响,需要警惕。尽可能设置为not null
8、like以通配符开头('%abc...')mysql索引失效

9、字符串不加单引号索引失效 (底层使用数据类型转换)

10、少用or,用它来连接时会索引失效

可以使用union 替代 or

接着是一个索引的练习题:

以上这些就是sql的优化的一部分。
总结了一个口诀:
全值匹配才最棒,最佳左前缀法则;
刘备大哥不能死,关羽兄弟不能断;
索引列上少计算,范围之后全完蛋;
LIKE百分写最右,覆盖索引有妙用;
不等空值还有OR,索引影响要注意;
mysql的优化是一个非常大的命题,大约分为4个大方向,我们只讲了一个方向:索引优化
- 索引优化: 合理设计索引,优化查询性能,避免全表扫描。
- 查询优化: 优化SQL查询语句,避免慢查询,提高查询效率。
- 缓存优化: 合理利用MySQL内置的缓存机制,如查询缓存、结果缓存等,减少对数据库的访问次数。
- 硬件优化: 选择合适的硬件配置,包括CPU、内存、磁盘等,提高数据库的吞吐量和响应速度。
相关文章:
mysql之sql的优化方案(重点)
1、全字段匹配是最棒的 假如一个Staffs 这个表,将 name,age ,pos 组合成了一个联合索引,在where条件下,能够使用到的索引越多越好。 EXPLAIN SELECT * FROM staffs WHERE NAME July; EXPLAIN SELECT * FROM staffs WHERE NAME July AND age…...
【LeetCode】303. 区域和检索 - 数组不可变
目录 描述Python1. 前缀和 描述 给定一个整数数组nums,处理以下类型的多个查询:计算索引left和right(包含left和right)之间的nums元素的 和 ,其中left < right 实现NumArray类: NumArray(int[] nums)&a…...
前端开发 vue 中如何实现 u-form 多个form表单同时校验
在 Vue 项目中使用 UView UI 的 u-form 组件时,多个表单同时校验的需求非常常见。例如,当我们有多个表单需要在同一个页面中进行校验并提交时,我们需要确保每个表单都能进行单独验证,同时可以在同一时刻进行批量验证。 接下来&am…...
【网络】什么是速率 (Rate)带宽 (Bandwidth)吞吐量 (Throughput)?
注意单位: 在 kbps、Mbps、Gbps 中,前面的 k、M、G 是 国际单位制(SI) 的前缀,表示不同的数量级: k(千/kilo): (10^3 1,000) kbps(kilobits per second): 每秒 1,000 位(…...
(leetcode算法题)769. 最多能完成排序的块
Q1. 是否能用贪心算法?为什么? 先预设一个策略,每当当前的nums[i]满足可以 "成块",就直接让这个数成块,也就是说之后的遍历过程中不会将这个数在考虑到自己的块内, "成块" 是指只要只…...
高光谱相机的特点
光谱特性 高光谱分辨率:能将光谱范围分割成极窄的波段,光谱分辨率通常达到纳米级甚至亚纳米级,可精确捕捉到不同物质在细微光谱差异上的特征,比如可以区分不同种类的植被因叶绿素含量等差异而在光谱上的细微变化。 多波段探测&a…...
《Spring Framework实战》8:4.1.3.Bean 概述
欢迎观看《Spring Framework实战》视频教程 Spring IoC 容器管理一个或多个 bean。这些 bean 是使用 您提供给容器的配置元数据(例如,以 XML <bean/>定义的形式)。 在容器本身中,这些 bean 定义表示为BeanDefinition对象&a…...
BGP的local_preference本地优先级属性
一、BGP的local preference属性简介 1、local preference公认任意属性 当一条BGP路由器中存在多条去往同一目标网络的BGP路由时,BGP协议会对这些BGP路由属性进行比较,从而筛选出最佳到达目标网络的通达路径。本地优先属性,只在IBGP对等体之间…...
IP地址与端口号
ip地址与端口号 IP地址和端口号是网络通信中的两个重要概念,它们共同构成了网络通信的基础。 IP地址:网络世界的门牌号 定义:IP地址(Internet Protocol Address)是分配给网络设备的数字标签,用于在计算机网…...
Fastapi + vue3 自动化测试平台(2)--日志中间件
FastAPI Vue3 自动化测试平台(2)-- 日志中间件 前言 在开发和运行自动化测试平台时,日志功能是至关重要的一部分。日志不仅能帮助我们快速定位和解决问题,还能作为平台运行的记录依据,为后续分析和优化提供参考。 …...
iOS - AutoreleasePool
1. 基本数据结构 // AutoreleasePool 的基本结构 struct AutoreleasePoolPage {static pthread_key_t const key AUTORELEASE_POOL_KEY;magic_t const magic;id *next; // 指向下一个可存放对象的地址pthread_t const thread; // 所属线程AutoreleasePoolPage …...
1.CSS的复合选择器
1.1 什么是复合选择器 在CSS中,可以根据选择器的类型把选择器分为基础选择器和复合选择器,复合选择器是建立在基础选择器之上,对基础选择器进行组合形成的。 复合选择器可以更精准、更高效的选择目标元素(标签) 复…...
优质内容在个人IP运营中的重要性:以开源AI智能名片商城小程序为应用实例的深度探讨
摘要:在数字化时代,个人品牌(IP)的塑造与传播已成为各行各业提升影响力、吸引用户关注、促进商业转化的关键策略。优质内容作为连接个人IP与目标受众的桥梁,其在个人IP运营中的重要性不言而喻。本文旨在深入探讨优质内…...
Kafka性能测试
kafka是一个大数据消息队列(可以看做为缓存软件) 功能测试:能够读写数据 性能测试:1、测试生产者每秒往kafka写入的最大吞吐量 2、测试消费者每秒从kafka里获取消息最大吞吐量 硬件 3台物理机组成的kafka集群。 内存121G、24…...
解决Docker冲突问题
错误:docker-ce-cli conflicts with 2:docker-1.13.1-210.git7d71120.el7.centos.x86_64 错误:docker-ce conflicts with 2:docker-1.13.1-210.git7d71120.el7.centos.x86_64 您可以尝试添加 --skip-broken 选项来解决该问题 您可以尝试执行:…...
新手入门 React .tsx 项目:从零到实战
🚀 新手入门 React .tsx 项目:从零到实战 💻✨ 如果你是 React 新手,刚接触 .tsx 文件,不要担心!跟着这份指南,一步一步来,你很快就能上手了!👇 Ὅ…...
基于可信数据空间的企业数据要素与流通体系建设(附ppt 下载)
近期,可信数据空间会议召开。大数据系统软件国家工程研究中心总工程师王晨发表了题为《基于可信数据空间的企业数据要素与流通体系建设》主旨演讲。 篇幅限制,部分内容如下:...
二维数组:求最大元素及其所在的行坐标及列坐标(PTA)C语言
求出NM整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最前面的一个)。 函数接口定义: int fun(int array[N][M]) ; 注意:函数只需靠return返回最大元素的值, 行、列坐标通过…...
WebRtc01: 课程导学、框架介绍
应用 难点 课程大纲 学习收获 涉及内容 概述 用途 学习收获...
HQChart使用教程30-K线图如何对接第3方数据44-DRAWPIE数据结构
HQChart使用教程30-K线图如何对接第3方数据44-DRAWPIE数据结构 效果图DRAWPIEHQChart代码地址后台数据对接说明示例数据数据结构说明效果图 DRAWPIE DRAWPIE是hqchart插件独有的绘制饼图函数,可以通过麦语法脚本来绘制一个简单的饼图数据。 饼图显示的位置固定在右上角。 下…...
企业级文档翻译离线部署终极指南:BabelDOC本地化实战深度解析
企业级文档翻译离线部署终极指南:BabelDOC本地化实战深度解析 【免费下载链接】BabelDOC Yet Another Document Translator 项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC 在当今全球化业务环境中,企业面临着海量技术文档、研究报告…...
红队评估红日靶场7
声明 本文所涉及的技术、代码、工具及方法仅供网络安全研究与授权测试使用。 未经目标系统所有者书面授权,严禁对任何系统进行渗透测试、漏洞探测或攻击行为。 作者(本人)对因滥用本文内容而导致的任何直接或间接后果不承担法律责任。 请遵守…...
5分钟玩转nanobot:超轻量级AI助手的多场景使用体验
5分钟玩转nanobot:超轻量级AI助手的多场景使用体验 1. 初识nanobot:轻量级AI助手新选择 如果你正在寻找一个既强大又轻便的AI助手,nanobot绝对值得一试。这个基于Qwen3-4B-Instruct-2507模型的AI助手,整个系统仅需约4000行代码&…...
电脑死机解决方法
长按开机键,如20秒,重启。...
模型微调初探:基于Qwen1.5-1.8B GPTQ进行领域适配的可行性分析
模型微调初探:基于Qwen1.5-1.8B GPTQ进行领域适配的可行性分析 最近和几个做企业服务的朋友聊天,他们都在琢磨同一个问题:现在市面上通用的大模型能力确实强,但一遇到自己行业里的专业问题,比如看一份复杂的法律合同&…...
Golang怎么实现SSE服务端推送事件_Golang如何用Server-Sent Events实时推送数据【教程】
Go 的 http.ResponseWriter 能多次写入,但需禁用缓冲、手动刷新并防止中间件断连;SSE 需设正确 header、定时心跳、严格格式输出、绕过干扰中间件,并配置反向代理。Go 的 http.ResponseWriter 为什么不能直接写多次?因为 SSE 要求…...
ACE-Step应用场景解析:如何为视频快速生成背景音乐?
ACE-Step应用场景解析:如何为视频快速生成背景音乐? 1. 引言:视频创作者的背景音乐痛点 在视频创作过程中,背景音乐的选择往往成为最耗时的环节之一。专业音乐授权费用高昂,免费音乐库又难以找到完全匹配的内容&…...
wan2.1-vae部署方案:CSDN GPU云+自定义域名+HTTPS反向代理配置
wan2.1-vae部署方案:CSDN GPU云自定义域名HTTPS反向代理配置 1. 平台介绍 muse/wan2.1-vae是基于Qwen-Image-2512模型的AI图像生成平台,能够根据中英文提示词生成高质量、高分辨率的图像。这个平台特别适合需要快速生成专业级图像的用户,无…...
WiiChuk_compat:高兼容Nunchuk驱动库详解
1. WiiChuk_compat 库概述WiiChuk_compat 是一个专为嵌入式平台设计的开源 Arduino 兼容库,其核心目标是实现对任天堂 Wii 遥控器扩展配件——Nunchuk(常被误拼为 “Numchuck”、“Nunchuck” 或 “Nunchuk”)的高可靠性、宽兼容性 IC 接口驱…...
OpenClaw自动化创作:Qwen3.5-9B-AWQ-4bit生成图文小红书草稿
OpenClaw自动化创作:Qwen3.5-9B-AWQ-4bit生成图文小红书草稿 1. 为什么选择OpenClaw解决内容创作瓶颈 去年开始运营小红书账号时,我每天要花4-5小时在内容创作上——从产品截图整理、卖点提炼到排版设计,整个过程既耗时又重复。直到发现Ope…...
