or会导致MySQL索引失效的原因

article/2025/9/30 0:39:09

此处的失效是指:如果条件中有or,只要其中一个条件没有索引,其他字段有索引也不会使用。

来张图对比下吧
在这里插入图片描述
OK,结论有了,但是为什么呢?
个人理解:
MySQL优化执行计划目标都是出于成本考虑。OK,那么我们就对比下用索引和不用索引的成本好了。

不用索引

一次全表扫描完事

使用索引

就按照上图的表来描述好了。

  • id走索引,
  • user_id不走索引,所以成本就是全表扫描
  • 最后还需要merge求并集
    结果: 全表扫描+索引扫描+merge

结论

很明显直接进行全表扫描操作更少,因此MySQL在这种情况下不走索引直接全表扫描也就可以理解了。

顺便上个都有索引的图好了。
在这里插入图片描述
可见都有索引的情况是直接使用的union。


http://chatgpt.dhexx.cn/article/McQi54M4.shtml

相关文章

MySql索引失效的几种原因分析

测试数据准备 建表语句 CREATE TABLE t_user_demo ( id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ‘自增id’, name VARCHAR(20) DEFAULT NULL COMMENT ‘姓名’, phone char(11) DEFAULT NULL COMMENT ‘手机号’, age TINYINT DEFAULT NULL COMMENT ‘年龄’, sex…

MySQL索引失效场景以及解决方案

一、前言 在对SQL语句进行索引查询时会遇到索引失效的时候,对于该语句的可行性以及性能效率方面有至关重要的影响,本篇剖析索引为何失效,有哪些情况会导致索引失效以及对于索引失效时的优化解决方案,其中着重介绍最左前缀匹配原则…

MySQL索引失效的几种场景

我们都知道建立索引能够提高查询效率,那么是不是任何情况下都能提高呢,当然不是的的,下面我们就来列举一些常见的索引失效的场景。 借用上一篇文章的dm_person_info表 在card_code列没加索引的时,查询时间如下,大概都…

mysql索引失效的几种情况(总结)

索引并不是时时都会生效的,比如以下几种情况,将导致索引失效: 1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因) 注意:要想使用or,又想让索引生效,只能将or条件…

导致mysql索引失效的原因有哪些

MySQL五种索引类型 sql执行顺序 (根据sql执行顺序来优化,可以把关联表判断条件放到on后面) from on join where group by having select distinct union order by limit一、哪些字段适合建索引 二、范围查询索引失效问…

MySQL 索引失效的几种情况

前言 MySQL 中提升性能的一个最有效的方式是对数据表设计合理的索引。索引提供了高效访问数据的方法,并加快查询的速度,因此索引对查询的速度有着至关重要的影响。 使用索引可以快速定位表中的某条记录,从而提高数据库的查询的速度&#xf…

MySQL索引失效的9种情况(针对InnoDB存储引擎)

前言 MySQL中提高查询性能的最有效的方式之一就是对数据表合理的设计索引,优秀的索引的设计方案很大程度上可以提高查询的性能。 因此,索引对查询的速度有着至关重要的影响。 为了尽量的使优化器用到我们的索引方案,我们要尽量避免一些导致…

Mysql:索引失效的几种可能原因

最近闲来无事,发现自己mysql的知识点忘得差不多了,打算重新拾起来捯饬捯饬,个人觉得其中最重要的知识点还是mysql的优化问题,毕竟mysql使用方面都是很简单的东西,打算从索引方面开始学习吧。 有时候我们会发现&#xf…

详解MySQL索引失效

目录 B树结构 测试数据 索引失效的情况 没有用到索引 违反左前缀原则 范围查询断索引 like需要分情况 结果数据超过半数 B树结构 索引失效的根本原因其实就是违反了B树的结构特性,查找的时候没办法在B树上继续走下去,所以首先我们来回顾一下B树…

MySQL索引失效的场景,什么情况下会造成MySQL索引失效

目录 一、准备工作,准备sql 二、索引是什么、使用explain关键字来解析sql使用索引情况 三、索引的使用与失效场景 1.使用全部复合索引(索引正常使用) 2.最佳左前缀法则 3.在索引列上做任何操作(计算、函数、自动或手动类型转…

Mysql索引失效的总结

背景 最近生产爆出一条慢sql,原因是用了or和!,导致索引失效。于是,总结了索引失效的十大杂症,希望对大家有帮助,加油。 一、查询条件包含or,可能导致索引失效 新建一个user表,它有一个普通索…

Mysql索引失效的常见原因如何用好索引

本篇文章主要介绍了索引失效的常见原因和如何用好索引,并以案例的形式进行了说明 1 结论 1.1 索引失效的常见原因 1.2 索引失效的常见误区 1.3 索引设计的几个建议 2 准备工作 先查看我本地mysql数据库的版本: select VERSION();我这里的版本是5.5.25&#xff0…

mysql索引失效情况

1、最佳左前缀原则——如果索引了多列,要遵守最左前缀原则。指的是查询要从索引的最左前列开始并且不跳过索引中的列。 前提条件:表中已添加复合索引(username,password,age) 分析:该查询缺少username,查询…

MySQL中索引失效有哪些?

前言 在学习MySQL时,如果我们想提高一条语句查询速度,通常都会想对字段建立索引。 但是索引并不是万能的。建立了索引,并不意味着任何查询语句都能走索引扫描。 稍不注意,可能你写的查询语句会导致索引失效,从而走了…

MySQL之索引失效情况

文章目录 1 MySQL索引1.1 简介1.1.1 索引基础 1.2 SQL优化1.2.1 查看执行计划1.2.2 show profile分析1.2.3 trace 2 索引失效2.1 准备工作2.1.1 创建user表2.1.2 插入数据2.1.3 查看数据库版本 2.2 联合索引2.2.1 联合索引中索引有效2.2.2 联合索引中索引失效2.2.3 MySQL 8中索…

Mysql索引失效

一.前言 针对Mysql数据库索引失效问题网上,有很多见解和答案。最近面试也是时常会被问道的一个知识点,简单的整理一下,省的以后忘记。 二.导致索引失效的几个情况 1.模糊查询:like %;like %%通配符放在开头会导致索引失效。会进行全表扫描…

详解MySQL索引失效的几种情况

MySQL索引是提高查询效率的重要手段。索引失效会导致查询效率下降,甚至全表扫描,影响数据库性能。以下是可能导致MySQL索引失效的情况: 1. 使用or操作符 当where语句中使用or操作符并且or两边的条件涉及到至少两个字段时,MySQL无…

mysql索引失效的常见9种原因详解

目录 前言&#xff1a; 1.最佳左前缀法则 2.主键插入顺序 3.计算、函数、类型转换(自动或手动)导致索引失效 4.范围条件右边的列索引失效 5.不等于(! 或者<>)导致索引失效 6.is null可以使用索引&#xff0c;is not null无法使用索引 7.like以通配符%开头索引失效…

【第三篇】MySQL 索引失效的常见原因【重点】

1.1 概述 有时候不知道小伙伴有没有跟我一样的情况&#xff0c;明明已经建立了索引&#xff0c;但是通过explain发现语句并没有使用上索引&#xff0c;这可能是某些原因导致了我们的索引失效。所以本篇主要介绍的是索引失效的常见原因和如何用好索引&#xff0c;给有需要的朋友…

你的凭据不工作,之前用于连接到(服务器IP)的凭据无法工作,请输入新的凭据(中英文均有)

之前windows还能够访问远程桌面&#xff0c;更新了系统发现又不行了&#xff0c;所以记录一下&#xff0c;解决方案&#xff1a; 在搜索里面输入gpedit.msc&#xff0c;进入到本地组策略编辑器&#xff1a; 中文版&#xff0c;把蓝色选中的策略改为&#xff08;经典&#xff…