当前位置: 首页 > news >正文

mysql索引优化

1、不在索引列做任何操作:

函数表达式:select  sum(id) from

计算:where  id + 1;

隐式转换:where  id + ""

2、尽量全值匹配(在联合索引中,where 后面的条件尽量和索引的所有列匹配);

where 后面的条件先后顺序与索引的字段顺序没关,查询优化器会调整顺存

3、遵守最佳左前缀法则;

当where 语句不能全值匹配时,也要遵守最佳左前缀法则;

index   username,phone,status;

where   phone,status            -----不推荐

where  username,phone     -------推荐

4、范围条件放最后(也是针对联合索引)

<! >=

between     and

中间也有范围查询,后面也有范围查询,则后面的范围查询索引会失效

where  username=a   and   status>0   and starttime  between    and

5、尽量使用覆盖索引,覆盖select后的所有列,避免回表查询

不要使用select  *

6、不等于要慎用;!=、>=、<=

7、is null和is  not  null也可以会导致索引失效

如果字段是非空,那么is  null会导致索引失效?

如果字段不是非空(可以为空),is   not  null会导致索引失效?

8、字符串加引号(不加的话,mysql会自动加上,相当于对索引列做了操作,索引列会失效)

9、like条件查询

like  "abc%" 索引不失效;

like   "%abc"   索引失效,因为字符串排序,然后前面不确定,就会失效

10、使用or条件也可能会导致索引失效:,

order_no = 'aaa'   or   order_no='bbbb';   or前后字段一样,索引生效

order_no = 'aaaa'    or   status = 0;           字段不一样,其中一个没索引,则索引失效;优化:拆成两个select 语句,使用union all连接;

11、排序优化,ASC,DESC

order  by  字段的顺序尽量和复合索引字段的顺序一致,否则会导致随机读取数据;

select  *  from  table1,table2 order by只会按一个表排序

12、按主键顺序插入行

(主键不建议使用UUID)

13、count()优化:根据业务来

count(*) 统计的是所有行,包含为null的行;

count( email) 统计的是不包含null的行;

count(*)遍历数据,判断null,返回数据,累加

count(0)遍历数据,判断null,不返回数据,只累加

count(字段)遍历数据,判断null,为null的数据不返回,返回数据,累加

14、优化limit(深分页问题)

select * from  table  limit  10000,10;会进行全表扫描;使用子查询进行优化:

select  * from 

        (select id  from  table  limit  10000,10) t1;会走主键索引;但效果不明显;可以根据业务:如果id是有顺序的:

select   * from   where   id> 10000   limit 10000,10;那么不会再扫描10000前的数据;

15、关于null值(有争议)不在where 语句中进行is  null或is not  null的判断

mysql认为:任何值与null比较都是null

优化:使用默认值

16、in 和not in也有可能会导致索引失效:使用exist代替in,或者使用子查询

相关文章:

mysql索引优化

1、不在索引列做任何操作&#xff1a; 函数表达式&#xff1a;select sum(id) from 计算&#xff1a;where id 1&#xff1b; 隐式转换&#xff1a;where id "" 2、尽量全值匹配&#xff08;在联合索引中&#xff0c;where 后面的条件尽量和索引的所有列匹配…...

Linux文件编程(打开/创建写入读取移动光标)

目录 一、如何在Linux下做开发 1.vi编辑器 2.gcc编译工具 3.常用指令 二、文件打开及创建 三、写入文件 四、读取文件 五、文件“光标”位置 一、如何在Linux下做开发 所谓文件编程&#xff0c;就是对文件进行操作&#xff0c;Linux的文件和Windows系统的文件大差不差…...

集成测试技术栈

前端 浏览器操作&#xff1a;playwright、selenium 后端 testcontainercucumbervitestcypressmsw...

MongoDB - 集合和文档的增删改查操作

文章目录 1. MongoDB 运行命令2. MongoDB CRUD操作1. 新增文档1. 新增单个文档 insertOne2. 批量新增文档 insertMany 2. 查询文档1. 查询所有文档2. 指定相等条件3. 使用查询操作符指定条件4. 指定逻辑操作符 (AND / OR) 3. 更新文档1. 更新操作符语法2. 更新单个文档 updateO…...

【深度学习基础】安装包报错——MAC M3-MAX芯片安装scikit-learn库报错。

目录 一、问题描述二、解决方法 一、问题描述 首先想安装scikit-learn库在mac终端显示顺利安装完成&#xff0c;但是测试的时候报错如下所示&#xff1a; /opt/anaconda3/envs/dtc/bin/python /Users/chenfaquan/PycharmProjects/TimeSeries/data_create.py Traceback (most…...

【chatgpt消费者偏好】是什么驱动了游客持续旅游意愿?推文分享—2024-07-08

今天推文的主题是【chatgpt&消费者意愿】 第一篇&#xff1a;文章主要研究了什么因素驱动旅游者继续使用ChatGPT进行旅行服务&#xff0c;并从人类拟态的角度探讨了旅游者对ChatGPT的感知和使用意图。第二篇&#xff1a;本文探讨了ChatGPT-4在生成针对TripAdvisor上发布的…...

torchplus

https://gitee.com/hj_research/torchplus 一、安装 pip install tplus...

LeetCode之最长回文子串

1.题目链接 5. 最长回文子串 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/longest-palindromic-substring/description/ 2.题目解析 对于这道题目我们可以使用动态规划的思路来求解&#xff0c;具体思路是&#xff0c;对于一个长度大于2的子串&…...

Gradle 介绍

Gradle 定义 Gradle 是一个现代化的构建自动化工具&#xff0c;用于管理软件项目的构建过程和依赖关系。它通过一种灵活且强大的 DSL&#xff08;领域特定语言&#xff09;语法来描述项目的构建逻辑和任务&#xff0c;可以用于构建几乎任何类型的软件项目&#xff0c;从简单的应…...

短视频矩阵:批量发布的秘密揭秘

在数字化时代&#xff0c;短视频已经成为一种广受欢迎的媒体形式。无论是用于品牌推广、产品营销还是个人创作&#xff0c;短视频都提供了一种直观、生动的方式来吸引观众的注意力。然而&#xff0c;有效地制作、管理和发布短视频对于许多创作者和企业来说是一个挑战。 为此&am…...

基于 Nginx + Spring Boot + Vue + JPA 的网站安全防护指南

引言 在现代互联网时代&#xff0c;确保网站的安全性非常重要。尤其是基于前后端分离架构&#xff0c;更需要特别注意安全防护。接下来&#xff0c;带你了解几种常见的安全攻击及其应对措施。 常见的安全攻击及应对措施 1. 跨站脚本攻击 (XSS) 攻击描述&#xff1a; 跨站脚…...

Perl词法切分器:文本解析的瑞士军刀

&#x1f4d6; Perl词法切分器&#xff1a;文本解析的瑞士军刀 在编程语言中&#xff0c;词法分析是编译过程的第一步&#xff0c;它涉及将输入的源代码分解成一个个的词素或标记。Perl作为一种功能强大的文本处理语言&#xff0c;提供了丰富的工具来进行词法切分。本文将深入…...

基于深度学习LightWeight的人体姿态之行为识别系统源码

一. LightWeight概述 light weight openpose是openpose的简化版本&#xff0c;使用了openpose的大体流程。 Light weight openpose和openpose的区别是&#xff1a; a 前者使用的是Mobilenet V1&#xff08;到conv5_5&#xff09;&#xff0c;后者使用的是Vgg19&#xff08;前10…...

Mac窗口辅助管理工具:Magnet for mac激活版

magnet mac版是一款运行在苹果电脑上的一款优秀的窗口大小控制工具&#xff0c;拖拽窗口到屏幕边缘可以自动半屏&#xff0c;全屏或者四分之一屏幕&#xff0c;还可以设定快捷键完成分屏。这款专业的窗口管理工具当您每次将内容从一个应用移动到另一应用时&#xff0c;当您需要…...

DWM 相关实现代码 [自用]

1. DWM 缩略图和模糊隐藏实现半透明 #include <windows.h> #include <dwmapi.h> #include <string> #pragma comment(lib, "dwmapi.lib")// 检查 UWP 窗口是否可见 bool IsUWPWindowVisible(HWND hwnd) {DWORD cloaked 0;DwmGetWindowAttribute(…...

根据样本数据的区域分布进行重采样

希望根据数据的区域分布进行重采样&#xff0c;通常用于处理空间数据或具有明显区域特征的数据。 文章目录 重采样整体思路数据集重采样步骤 区域划分的方法具体代码案例1. 基于规则的划分2. 基于密度的划分3. 基于层次的划分4. 基于图的划分5. 基于网格的划分6. 基于自组织映射…...

数据库之MQL

1&#xff0c;查询所有 mysql> select * from grade;2&#xff0c; mysql> select id,firstname,lastname from grade;3&#xff0c; mysql> select firstname,lastname from grade where id > 4;4&#xff0c; mysql> select * from grade where sex f;5&…...

LabVIEW平台从离散光子到连续光子的光子计数技术

光子计数技术用于将输入光子数转换为离散脉冲。常见的光子计数器假设光子是离散到达的&#xff0c;记录到来的每一个光子。但是&#xff0c;当两个或多个光子同时到达时&#xff0c;计数器会将其记录为单个脉冲&#xff0c;从而只计数一次。当连续光子到达时&#xff0c;离散光…...

【Linux】Windows平台使用gdb调试FFmpeg源码

FFmpeg是一个跨平台的多媒体库&#xff0c;有时需要在别的平台上进行开发和调试&#xff0c;记录一下在linux环境下使用gdb来调试FFmpeg源码的基本方式 1.可执行文件 在windows平台使用linux环境来调试FFmpeg源码&#xff0c;需要编译生成一个后缀有_g的exe文件&#xff0c;参…...

提交表单form之后发送表单内容到指定邮箱(单php文件实现)

提交各种表单之后&#xff0c;自动将表单的内容通过邮件api接口的形式自动发送到指定的邮箱。步骤如下&#xff1a; 1.在aoksend注册一个账号。 2.绑定一个自己的域名。做域名解析之后验证。验证通过后自动提交审核。等待审核通过。 3.设置一个邮件模板。aoksend内置了一些优…...

别再手动复制粘贴了!C++20 assign函数让你的容器操作效率翻倍(附vector/deque实战代码)

C20 assign函数&#xff1a;告别低效循环&#xff0c;解锁现代容器操作新范式 在C日常开发中&#xff0c;容器操作占据了大量编码时间。你是否还在为以下场景烦恼&#xff1a;需要将一个vector的部分元素复制到另一个容器时&#xff0c;不得不写冗长的循环&#xff1b;当要重置…...

面试官最爱阴人的滑动窗口题,为啥你总是写崩?

面试官最爱阴人的滑动窗口题,为啥你总是写崩? 很多人刷算法的时候,都有一种错觉: 动态规划最难。 图论最恶心。 回溯最容易超时。 结果真正到了大厂面试现场。 面试官笑眯眯来一句: 给你一个字符串,求: 至多包含 K 个不同字符的最长子串然后。 一堆人开始原地去世…...

3分钟解锁音乐自由:ncmdump让网易云音乐NCM文件随处播放

3分钟解锁音乐自由&#xff1a;ncmdump让网易云音乐NCM文件随处播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的歌曲只能在特定客户端播放而烦恼吗&#xff1f;当您精心收藏的音乐被NCM加密格式束缚&…...

终极指南:如何在Mac上免费实现NTFS读写功能

终极指南&#xff1a;如何在Mac上免费实现NTFS读写功能 【免费下载链接】Free-NTFS-for-Mac Nigate: An open-source NTFS utility for Mac. It supports all Mac models (Intel and Apple Silicon), providing full read-write access, mounting, and management for NTFS dri…...

终极指南:3种方法快速部署Windows官方包管理器Winget

终极指南&#xff1a;3种方法快速部署Windows官方包管理器Winget 【免费下载链接】winget-install Install WinGet using PowerShell! Prerequisites automatically installed. Works on Windows 10/11 and Server 2019/2022. 项目地址: https://gitcode.com/gh_mirrors/wi/w…...

生成式AI项目实战:从PyTorch到Hugging Face的完整开发指南

1. 项目概述&#xff1a;从GitHub仓库名到生成式AI项目的实战蓝图看到HeyNina101/generative_ai_project这个仓库名&#xff0c;很多开发者会心一笑。这太典型了——一个以个人ID命名的GitHub仓库&#xff0c;里面很可能是一个关于生成式人工智能&#xff08;Generative AI&…...

OmenSuperHub:让你的惠普OMEN游戏本性能全开,告别官方臃肿软件

OmenSuperHub&#xff1a;让你的惠普OMEN游戏本性能全开&#xff0c;告别官方臃肿软件 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度&#xff0c;自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 还在为惠普OMEN游戏…...

Linux巡检报告生成排查方法

Linux巡检报告生成排查方法本文面向具备一定 Linux 基础的技术人员&#xff0c;围绕巡检报告生成展开&#xff0c;重点讨论检查汇总、异常标记和结果归档。在中级运维和系统管理工作中&#xff0c;这类主题常常与配置变更、资源状态、权限边界、自动化任务和业务影响交织在一起…...

Armv9内存拷贝指令优化与性能调优

1. Arm架构内存拷贝指令深度解析在Armv9架构中&#xff0c;内存拷贝操作通过FEAT_MOPS(Memory Operations)特性得到显著增强。这套指令集专为高效内存操作设计&#xff0c;其中CPYFP/CPYFM/CPYFE系列指令实现了分阶段的内存拷贝机制。与传统的循环拷贝相比&#xff0c;这种设计…...

从NeoPixel到CircuitPython:打造智能LED眼镜的完整硬件与软件实践

1. 项目概述 如果你对可穿戴电子设备、酷炫的LED光效以及用代码创造物理交互感兴趣&#xff0c;那么这个项目绝对能让你兴奋起来。今天要分享的&#xff0c;是如何亲手制作一副灵感来源于电子音乐人REZZ标志性风格的NeoPixel LED眼镜。这不仅仅是一个简单的焊接和组装教程&…...