MySQL索引优化,MySQL索引失效的场景(超详细!)

目录

1.不遵循最左前缀原则

2.在索引列上使用(计算,函数,or,类型转换),都是导致失效而导致全表扫描

3.范围查询

4.Select  * 导致回表查询

5.不等空值还有or导致索引失效

6.like %写在左边导致索引失效

7.字符串不加单引号也会导致索引失效



Mysql的锁有哪些?超详细Mysql的锁介绍,表锁,行锁,间隙锁,临键锁,意向锁,元数据锁。Mysql数据库索引有哪些?从数据结构角度,从物理存储角度,从逻辑角度来分析

Mysql的锁有哪些?超详细Mysql的锁介绍,表锁,行锁,间隙锁,临键锁,意向锁,元数据锁。Mysql数据库索引有哪些?从数据结构角度,从物理存储角度,从逻辑角度来分析

Mysql的锁有哪些?超详细Mysql的锁介绍,表锁,行锁,间隙锁,临键锁,意向锁,元数据锁。Mysql数据库索引有哪些?从数据结构角度,从物理存储角度,从逻辑角度来分析

下面的所以都是以复合索引(b,c,d)为前提

1.不遵循最左前缀原则

EXPLAIN SELECT * FROM ind WHERE c=3 AND d=4 AND b=2
EXPLAIN SELECT * FROM ind WHERE  d=4 AND c=3 AND b=2

这两个都会生效,因为Mysq底层会优化为最适合的sql

EXPLAIN SELECT * FROM ind WHERE  b=2  AND d=5 

 也会生效

EXPLAIN SELECT * FROM ind WHERE  c=3 AND d=2

 索引失效,原因是少了b索引,

总结:使用联合索引,只要最左边的索引还在,那索引就不会失效,

如果少了中间的,那么只会生效左边的,

2.在索引列上使用(计算,函数,or,类型转换),都是导致失效而导致全表扫描

使用索引得保证有序性,一旦使用了计算,函数,就会不可避免依次进行计算,也就会全表扫描

3.范围查询

当联合查询使用了范围查询,那么右边的字段就会失效

EXPLAIN SELECT * FROM ind WHERE  b=2 AND c>3 AND d=5

EXPLAIN SELECT * FROM ind WHERE  b>2 AND c=3 AND d=5

 可以看到,当最左边的索引使用范围查询时,右边的索引全部会失效

4.Select  * 导致回表查询

聚簇索引和非聚簇索引,

聚簇索引的B+树子节点包含主键和所有数据

非聚簇索引的B+树子节点包含索引和主键

覆盖索引就是在返回的字段中包含非索引字段会导致,当查询不到想要的字段就会去聚簇索引里面找数据,

在返回列里需要什么字段就写什么字段,最好与查询的条件相符,就是走覆盖查询

5.不等空值还有or导致索引失效

!= ,is null ,or都会导致索引失效,全表扫描

6.like %写在左边导致索引失效

like "%张"会导致索引失效,

会根据首字母来排序进行查询

7.字符串不加单引号也会导致索引失效

隐式转换

会对每一个都进行转换

而如果是 int类型加上了单引号,会自动转换为数字类型,不会导致索引失效

EXPLAIN SELECT * FROM ind WHERE  b='2'

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机408网课评测+资料分享

408当然有比较好的网课推荐,比如王道的视频课 现在大部分人备战408基本都用王道的讲义,然后再搭配王道408的课程来听,可以学的很好。 其中408视频课中,我认为讲的比较好的是数据结构,和操作系统,计算机组…

Talk|Mila研究所蒙特利尔大学刘圳:三维表征和三维网格的重建与生成

本期为TechBeat人工智能社区第580期线上Talk。 北京时间3月21日(周四)20:00,Mila研究所&蒙特利尔大学博士生—刘圳的Talk已经准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “三维表征和三维网格的重建与生成”,向大家系统地介…

基于Java的校园疫情防控管理系统(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生2.2 老师2.3 学校管理部门 三、系统展示四、核心代码4.1 新增健康情况上报4.2 查询健康咨询4.3 新增离返校申请4.4 查询防疫物资4.5 查询防控宣传数据 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBoot…

收割互联网大厂Offer面经

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

paddlepaddle框架构建数据集进行分类问题的时候,会发现数据集在构建的过程中不会构建标签(花分类)

问题描述 在做一个paddlepaddle项目的时候,需要使用神经网络对他进行分类,数据集的结构如下图,这时候我们可以使用常用dataset方法对数据集进行构建。 这时候我们就会发现一个问题,就是这个矿建不是构建标签,也就是说…

vue在页面使用Vue.prototype全局变量

文章目录 Vue.prototype 的基本概念使用 Vue.prototype 添加全局属性和方法添加全局属性添加全局方法 使用场景注意事项在模板中使用全局变量和方法方法1方法2方法3 Vue.prototype 的基本概念 Vue.prototype 是 Vue 实例的原型对象。在 JavaScript 中,每个构造函数…

【Java】Java程序员必备的一些流程图

一、spring的生命周期 Spring作为当前Java最流行、最强大的轻量级容器框架,了解熟悉spring的生命周期非常有必要; 首先容器启动后,对bean进行初始化按照bean的定义,注入属性检测该对象是否实现了xxxAware接口,并将相…

openlayers 入门教程(四):layers 篇

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,ech…

20240316-2-协同过滤(collaborative filtering)

协同过滤(collaborative filtering) 直观解释 协同过滤是推荐算法中最常用的算法之一,它根据user与item的交互,发现item之间的相关性,或者发现user之间的相关性,进行推荐。比如你有位朋友看电影的爱好跟你类似,然后最…

轻松找回丢失数据EasyRecovery数据恢复软件让你无后顾之忧

轻松找回丢失数据,EasyRecovery数据恢复软件让你无后顾之忧,电脑数码行业必备工具,让你的数据安全有保障 ! 一、EasyRecovery数据恢复软件简介 在我们的日常生活中,无论是工作还是学习,都离不开电脑和数据…

26 OpenCV 查找边缘

文章目录 findContours 发现边缘drawContours 绘制边缘大致流程示例 findContours 发现边缘 cv::findContours( InputOutputArray binImg, // 输入图像,非0的像素被看成1,0的像素值保持不变,8-bitOutputArrayOfArrays contours,// 全部发现的轮廓对象…

Mac玩《幻兽帕鲁》为什么打不开D3DMetal?d3d错误怎么办 d3dxl error

我之前发了一篇讲Mac电脑玩Steam热门新游《幻兽帕鲁》的文章(没看过的点这里),后来也看到很多朋友去尝试了,遇到了一些问题,无法进入《幻兽帕鲁》游戏,或者是玩的时候卡顿以及出现黑屏,通过我的…

Altium Designer中如何修改默认字体

Altium Designer软件安装后,原理图和PCB设计中的文本通常默认是Times New Roman。这是一种Windows系统安全字体,在很早之前的Windows系统中就已经默认安装了这个字体。这种字体对打印也比较友好,是一种很常见的印刷体。 但是这种字体对于习惯…

[Leetcode]930.和相同的二元子数组+992.K个不同整数的子数组 关键词:[子数组][滑窗]

文章目录 Leetcode 992方法一:滑窗右端每次1,左端来回滑动方法二:(最多K种的子串数) - (最多K-1种的子串数) 恰好K种 Leetcode 930方法一:(最多和为goal的子串数&#x…

移动app测试的好处简析,有必要选择第三方软件测试机构吗?

移动app测试是指对移动应用程序进行全面、系统和深入的检查和验证,以确保其功能、性能和稳定性达到预期要求。在移动应用市场日益竞争激烈的今天,进行移动app测试是至关重要的。 一、移动app测试的好处:   1、具有确保应用质量的作用。通过…

Linux 在线yum安装: PostgreSQL 15.6数据库

Linux 在线yum安装: PostgreSQL 15.6数据库 1、PostgreSQL数据库简介2、在线安装PostgreSQL15.63、配置 PostgreSQL的环境变量4、使用默认用户登录PostgreSQL5、配置 PostgreSQL 允许远程登录6、修改 PostgreSQL 默认端口7、创建数据库和表、远程用户zyl8、pgAdmin远…

基于Java的APK检测管理系统(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 开放平台模块2.3 软件档案模块2.4 软件检测模块2.5 软件举报模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 开放平台表3.2.2 软件档案表3.2.3 软件检测表3.2.4 软件举报表 四、系统展示五、核心代…

机器学习-06-无监督算法-02-层次聚类和密度聚类DBSCAN算法

总结 本系列是机器学习课程的系列课程,主要介绍机器学习中无监督算法,包括层次和密度聚类等。 参考 DBSACN在线动态演示 本门课程的目标 完成一个特定行业的算法应用全过程: 懂业务会选择合适的算法数据处理算法训练算法调优算法融合 算…

摸鱼小技巧来啦,速来围观

一、前言 在日常测试中,很多小伙伴还是选择使用usb连接设备的方式去进行跑测,当需要连接多台设备就没办法在电脑上插入这么多设备,只能选择使用无线连接的方式去进行连接测试。你们快来get这份详细的无线连接设备教程吧~ 二、远程连接Andro…