mysql索引失效场景与mysql优化方式

索引失效场景

联合索引不满足最左匹配原则

索引列参与了运算,会导致全表扫描,索引失效

索引列参使用了函数

模糊查询时(like语句),模糊匹配的占位符位于条件的左侧

like '%abc',like '%abc%' 都会导致失效,like 'abc%'不会

参数类型与字段类型不匹配,导致类型发生了隐式转换,索引失效

select * from t_user where id_no = 1002

id_no字段类型为varchar,但在SQL语句中使用了int类型,导致全表扫描

查询条件使用or关键字,其中一个字段没有创建索引,则会导致整个查询语句索引失效; or两边为“>”和“<”范围查询时,索引失效

select * from t_user where id = 2 or username = 'Tom2';

select * from t_user where id > 1 or id < 80

两列数据做比较,即便两列都创建了索引,索引也会失效

select * from t_user where id > age

当查询条件为字符串时,使用”<>“或”!=“作为条件查询,有可能不走索引,但也不全是

select * from t_user where id_no <> '1002'

查询条件使用不等进行比较时,需要慎重,普通索引会查询结果集占比较大时索引会失效

select * from t_user where create_time != '2022-02-27 09:56:42'

由于“2022-02-27 09:56:42”是存储过程在同一秒生成的,大量数据是这个时间。执行之后会发现,当查询结果集占比比较小时,会走索引,占比比较大时不会走索引。此处与结果集与总体的占比有关

查询条件使用is null时正常走索引,使用is not null时,不走索引

查询条件使用not in时,如果是主键则走索引,如果是普通索引,则索引失效

查询条件使用not exists时,索引失效

当查询条件涉及到order by、limit等条件时,是否走索引情况比较复杂

如何优化慢sql(索引,语句,表结构,数据量,分库分表,连接池参数,缓冲池参数,I/O参数)

使用索引:创建合适的索引可以大大加快查询速度。在选择要创建的索引时,请考虑查询频率和查询性能。
优化查询:尽可能使用简单的查询语句,并确保使用索引来过滤数据,以减少查询时间。
优化表结构:避免使用大型、不必要的列和表,以及尽可能使用小型数据类型。
使用存储过程和触发器:这些可以优化重复性操作的性能,并提高数据完整性。
使用分区分表:将表分为较小的分区可以提高查询性能,并减少查询时间。
避免使用 SELECT *:只选择需要的列可以减少查询时间和减轻数据库负载。
避免使用子查询:子查询可能会增加查询时间。如果可能,请使用联接操作。
避免使用临时表:创建和使用临时表可能会增加查询时间和占用更多的内存。
使用缓存:对于经常访问的查询结果,可以考虑使用缓存技术,如 redis。

使用主从复制:使用主从复制可以将查询负载分布到多个服务器上,并提高数据库的可伸缩性。
优化数据库设计:优化数据库设计可以提高查询性能和数据完整性,如使用正规化的表设计。
使用连接池:使用连接池可以避免频繁地创建和关闭数据库连接,从而提高数据库性能。
定期进行数据清理:定期清理不需要的数据和记录可以减少数据库的负载,并提高查询性能。

数据库调优

1)缓存大小参数

  • 缓冲池大小是Innodb存储引擎的核心参数之一,InnoDB 存储引擎缓存的数据和索引的大小,一般设置为物理内存的 60%-80%

2)线程池参数

  • 最大连接数(max_connections):允许同时连接到 MySQL 数据库的最大连接数,一般设置为 500-1000
  • 线程池大小(thread_pool_size):连接线程池的大小,一般设置为 CPU 核数的 2 倍
  • 等待连接超时时间(wait_timeout):等待连接的时间超过这个时间将会被强制断开

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

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

相关文章

【JVM的相关参数和调优】

文章目录 JVM 调优的参数类型一、标配参数二、X参数三、XX参数 JVM 调优的常用参数 JVM 调优的参数类型 一、标配参数 这类此参数在jdk的各个版本之间很少会变化&#xff0c;基本不改变 java -version&#xff0c;查看当前电脑上的jdk的版本信息 java -help&#xff0c;查看…

安卓(雷电)模拟器清除屏幕密码[亲测可用]

1、设置磁盘可写 启动模拟器&#xff0c;然后在模拟器的设置界面&#xff0c;设置磁盘共享为可写入&#xff0c;重启模拟器&#xff0c;如下图&#xff1a; 2、找到模拟器目录 返回桌面&#xff0c;右键模拟器图标&#xff0c;打开文件所在目录&#xff0c;如下图&#xff1a…

Casper Network (CSPR)2024 年愿景:通过投资促进增长

Casper Network (CSPR&#xff09;是行业领先的 Layer-1 区块链网络之一&#xff0c;通过推出了一系列值得关注的技术改进和倡议&#xff0c;已经为 2024 年做好了准备。 在过去的一年里&#xff0c;Casper Network (CSPR&#xff09;不断取得里程碑式的进展&#xff0c;例如推…

【小程序】微信小程序关联公众号(服务号)推送通知消息

一、背景 最近开发的一个小程序项目需要通过服务号来推送通知。但是在最开始开发小程序的时候并没有考虑到这个功能。 二、准备条件 预备知识&#xff1a; 小程序openid&#xff1a;小程序用户的唯一id 公众号openid&#xff1a;公众号用户的唯一id unionid&#xff1a;同…

Paddle模型转ONNX

深度学习模型在硬件加速器上的部署常常要用到ONNX&#xff08;Open Neural Network Exchange&#xff0c;开放神经网络交换&#xff09;格式&#xff0c;也可以通过ONNX实现不同AI框架&#xff08;如Pytorch、TensorFlow、Caffe2、PaddlePaddle等&#xff09;之间的模型转换。 …

Transformer详解【学习笔记】

文章目录 1、Transformer绪论2、Encoders和Decoder2.1 Encoders2.1.1 输入部分2.1.2 多头注意力机制2.1.3 残差2.1.4 LayNorm&#xff08;Layer Normalization&#xff09;2.1.5 前馈神经网路 2.2 Decoder2.2.1 多头注意力机制2.2.2 交互层 1、Transformer绪论 Transformer在做…

为什么企业容易陷入“自嗨式营销”,媒介盒子分析

互联网时代&#xff0c;各类信息都传播的非常快&#xff0c;同时信息技术的成熟也让许多企业可以监测广告效果&#xff0c;比如曝光、互动、转化等都可以通过数据体现&#xff0c;然而很多企业在营销过程中却发现&#xff0c;大部分的钱、精力、人力等都被浪费了。出现这种情况…

响应式编程WebFlux基础API

WebFlux的工作流程 在WebFlux中&#xff0c;主要的组件包括&#xff1a; Reactor: Reactor是WebFlux底层使用的响应式编程库&#xff0c;提供了Mono和Flux这两种响应式类型&#xff0c;分别用于表示0-1个和0-N个异步序列元素。WebHandler: 是处理请求的核心接口&#xff0c;所…

Git的简单使用说明

Git入门教程 git的最主要的作用&#xff1a;版本控制&#xff0c;协助开发 一.版本控制分类 ​​ 1.本地版本控制 ​​ 2.集中版本控制 ​​ 所有的版本数据都存在服务器上&#xff0c;用户的本地只有自己以前所同步的版本&#xff0c;如果不连网的话&#xff0c;用户就看不…

制作 Kali 可启动 USB 驱动器

Kali USB驱动器&#xff0c;轻松安全&#xff0c;获取最新镜像&#xff0c;开始强大的安全测试&#xff01; Kali 可启动 USB 驱动器的优点&#xff1a; 不会更改主机系统的硬盘驱动器或已安装的操作系统&#xff0c;并且要返回正常操作&#xff0c;您只需删除“Kali Live”U…

模型评估:超参数调优

对于很多算法工程师来说&#xff0c;超参数调优是一件非常头疼的事情。除了根据经验设定所谓的“合理值”之外&#xff0c;一般很难找到合理的方法去寻找超参数的最优取值。而与此同时&#xff0c;超参数对于模型效果的影响又至关重要。有没有一些可行的办法去进行超参数的调优…

Qt 6之七:学习资源

Qt 6之七&#xff1a;学习资源 Qt是一种跨平台的C应用程序开发框架&#xff0c;它提供了一套丰富的工具和库&#xff0c;可以帮助开发者快速构建跨平台的应用程序&#xff0c;用于开发图形用户界面&#xff08;GUI&#xff09;和非GUI应用程序。 Qt 6之一&#xff1a;简介、安…

全国(山东、安徽)职业技能大赛--信息安全管理与评估Apache配置评估题目+WP解析+环境

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋 🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步…

小手也能用的高性能鼠标,自定义空间还挺高,雷柏VT9Pro mini上手

今年搭载PAW3395传感器的电竞鼠标很受欢迎&#xff0c;雷柏就出了不少型号&#xff0c;满足各种喜好的玩家选择&#xff0c;像是近期新出的搭载3395高定版的VT9Pro和VT9Pro mini&#xff0c;就在轻量化的基础上&#xff0c;满足了各种手型的玩家的使用需要&#xff0c;而且价格…

Whale 帷幄创始人叶生晅:AIGC 时代,营销的范式变了丨未来 AI 谈

「未来 AI 谈」是「Marteker 营销技术官」联合「Digital Frontier 首席数字官」共同发起的一档对话栏目&#xff0c;旨在探讨生成式 AI 的崛起对泛营销技术和营销自动化带来的影响&#xff0c;以期帮助全行业探索 AIGC 时代的新营销之路。 本期嘉宾&#xff1a;「Whale 帷幄」创…

Linux中DNS域名解析服务及实验

一、DNS介绍 1、DNS 是域名系统&#xff0c;应用层协议&#xff0c;是互联网的一项服务&#xff0c;是将域名转换成网络可以识别的IP地址&#xff0c;再通过IP地址访问主机。这种由文字组成的名称更容易记忆。 DNS是“域名系统"的英文缩写。它作为将域名和IP地址相互映…

如何提高匹配的精确度(多次学习)

我们工业自动化中&#xff0c;视觉软件匹配&#xff0c;都是学习一次&#xff0c;比如找到轮廓&#xff0c;旋转360度&#xff0c;也就是有360个轮廓&#xff0c;然后到图像中去找任意角度的目标。 这样的学习并不能一而概括全。 所以&#xff0c;我借鉴ai的方法&#xff0c;…

C语言:高地址和低地址、高字节与低字节、大小端模式的转换、存储顺序

https://blog.csdn.net/oqqHuTu12345678/article/details/82823890/ 和另外一篇栈的生长、存放顺序一样&#xff0c;一般描述栈的方向是相反的&#xff0c;即栈底在下&#xff0c;栈顶在上。注意大小端存储方式&#xff0c;简单讲小端是低字节低地址&#xff0c;高字节高地址&…

ERP管理平台—通用功能测试用例

ERP管理平台—通用功能测试用例 登录页面UI页面UI验证正确打开系统

C#超市管理系统源码

C#超市管理系统源码 功能齐全的超市管理系统&#xff0c;专门美化过UI 请先附加数据库&#xff0c;否则无法进入系统 默认拥有最高权限账户为经理&#xff0c;密码为admin 压缩包内有使用说明