MySQL索引优化解决方案--索引失效(3)

news2024/11/24 4:34:31

索引失效情况

  1. 最佳左前缀法则:如果索引了多列,要遵循最左前缀法则,指的是查询从索引的最左前列开始并且不跳过索引中的列。
  2. 不在索引列上做任何计算、函数操作,会导致索引失效而转向全表扫描
  3. 存储引擎不能使用索引中范围条件右边的列
  4. MySQL在使用不等于时无法使用索引会导致全表扫描
  5. is null 可以使用索引,但是 is not null 无法使用索引
  6. like 以通配符开头会使索引失效导致全表扫描
  7. 字符串不加单引号,索引会失效
  8. 使用 or 链接时索引失效
drop table if exists students;
CREATE TABLE students (
  id INT PRIMARY KEY AUTO_INCREMENT COMMENT "主键id",
  sname VARCHAR (24) COMMENT '学生姓名',
  age INT COMMENT '年龄',
  score INT COMMENT '分数',
	time TIMESTAMP COMMENT '入学时间'
);
 
INSERT INTO students(sname,age,score,time) VALUES('小明',22,100,now());
INSERT INTO students(sname,age,score,time) VALUES('小红',23,80,now());
INSERT INTO students(sname,age,score,time) VALUES('小绿',24,80,now());
INSERT INTO students(sname,age,score,time) VALUES('黑',23,70,now());

alter table students add index idx_sname_age_score(sname,age,score);

-- 索引失效情况
explain select * from students where sname="小明" and age = 22 and score = 100;
explain select * from students where sname="小明" and age = 22;
explain select * from students where sname="小明";
explain select * from students where sname="小明" and score = 80;
-- 不在索引列上做任何计算、函数操作,会导致索引失效而转向全表扫描。
explain select * from students where left(sname,2) = "小明";
-- 存储引擎不能使用索引中范围条件右边的列。
explain select * from students where sname="小明" and age > 22 and score = 100;
-- Mysql在使用不等于时无法使用索引会导致全表扫描。
explain select * from students where sname!="小明";
-- is null可以使用索引,但是is not null无法使用索引。
explain select * from students where sname is not null;
-- like以通配符开头会使索引失效导致全表扫描。
explain select * from students where sname like "明%";
-- 字符串不加单引号索引会失效。
explain select * from students where sname = 123;
-- 使用or连接时索引失效。
explain select * from students where sname="小明" or age = 22;

注意:
在这里插入图片描述

建议:

  • 1.对于单值索引,尽量选择针对当前查询字段过滤性更好的索引。
  • 2.对于组合索引,当前where查询中过滤性更好的字段在索引字段顺序中位置越靠前越好。
  • 3.对于组合索引,尽量选择能够包含在当前查询中where子句中更多字段的索引。
  • 4.尽可能通过分析统计信息和调整query的写法来达到选择合适索引的目的。

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

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

相关文章

文华6幅图指标公式大全-多空精准买卖点提示指标源码

文华6幅图指标公式大全-多空精准买卖点提示指标源码: HH: HHV ( HIGH ,1)/5 HHV ( HIGH ,2)/5 HHV ( HIGH ,2)/5 HHV ( HIGH ,5)/5 HHV ( HIGH ,8)/5; LL: LLV ( LOW ,1)/5 LLV ( LOW ,2)/5 LLV ( LOW ,2)/5 LLV ( LOW ,5)/5 LLV ( LOW ,8)/5; H1: IFELSE ( H &l…

西门子840dsl机床仿真软件配置opcua说明

需要的安装包如下,可在百度网盘中下载 主软件包:sinutrain-v4.7-ed4(也可在官网中下载最新版本) 用户文件:UserDataBase 授权sinutrain:Sim_EKB_Install_2021_06_22 链接:https://pan.baidu.c…

【传拓研学】传承文化瑰宝,领略千年韵味

非遗薪火,传承中华文明 文化繁荣,共筑美好未来 在这风云变幻的时代,我们始终怀揣着对历史与文化的敬仰之情。今日,我们隆重向您推荐一项极具意义的活动——传拓研学活动。 传拓是我国一项古老的传统技艺,非遗物质文…

REST API 中的 HTTP 请求参数

当我们在谈论现代 Web 开发时,REST API (Representational State Transfer Application Programming Interface) 扮演着至关重要的角色。它允许不同的系统以一种简洁且高效的方式进行通信。HTTP 请求参数是控制此通信流程中数据如何被发送和接收的重要组成部分。 H…

【Apache Doris】周FAQ集锦:第 8 期

【Apache Doris】周FAQ集锦:第 8 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目! 在这个栏目中,每周将筛选社区反馈的热门问题和话题,重点回答并进行深入探讨。旨在为广大用户和…

杂记 | 搭建反向代理防止OpenAI API被封禁(对于此次收到邮件提示7月9日后将被屏蔽的解决参考)

文章目录 重要声明(免责)01 OpenAI封禁API的情况02 解决方案及原理2.1 原因分析2.2 解决方案2.3 步骤概述 03 操作步骤3.1 购买一个海外服务器3.2 申请一个域名3.3 将域名指向代理服务器3.4 在代理服务器上安装nginx3.5 配置反向代理 重要声明&#xff0…

IDEA启动报错:Abnormal build process termination...

一、问题描述 因为项目需要,同时打开了两个idea,突然发现一个启动的时候报错,有点莫名其妙,刚还好好的,为啥就不能用了,一顿百度找方法,试了各种方法,像重新安装jdk、重启系统发现都…

Linux源码阅读笔记04-实时调度类及SMP和NUMA

Linux进程分类 实时进程普通进程 如果系统中有一个实时进程并且可执行,调度器总是会选择他,除非有另外一个优先级高的实时进程。SCHED_FIFO:没有时间片,被调度器选择之后,可以运行任意长的时间。SCHED_RR:有…

轻松学AI绘画:PS AI插件,小白的入门秘籍

各位AIGC创意爱好者们,你们是否对AI绘画充满好奇,却又对那些复杂的国外软件感到望而却步?别急,今天我要为大家介绍一款适合新手的国产PS AI插件——StartAI,它将为你的创作之路带来无限可能! StartAI&…

SSLyze:一款快速高效的SSLTLS扫描工具

关于SSLyze SSLyze是一款快速高效且功能强大的SSL/TLS扫描工具,同时它也是一个Python库。 SSLyze在与目标服务器连接成功之后,可以对目标目标服务器的SSL/TLS配置进行扫描和分析,并确保其使用健壮的加密设置,包括证书、密码套件和…

会议等级地址

1.https://www.cnblogs.com/bnuvincent/p/6809353.html 2. 会议之眼地址 https://www.conferenceeye.cn/home/submission/1 3. 学术之家https://www.xueshu.com/sci/41975/

cpp入门(命名空间,输入输出与缺省参数)

目录 cpp关键字 命名空间 命名空间的使用 1.加名称及作用域限定符 2.使用using将命名空间中某个成员引入 3.展开命名空间 注意 输入输出 缺省参数 cpp关键字 命名空间 定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字&#xff0c…

IIC学习笔记(立创STMF4开发板)

目录 #I2C涉及相关知识 #I2C相关介绍 欢迎指正,希望对你,有所帮助!!! 个人学习笔记,参考文献,链接最后!!! #I2C涉及相关知识 SDA串行数据线: Ser…

【Docker】rancher 管理平台搭建

目录 1. 所有节点安装docker 2. 所有节点配置/etc/sysconfig/docker 文件修改如下配置 3. 配置证书 4. 镜像仓库导入镜像 5. 创建镜像仓库 5.1 查询上传的 image id 5.2 镜像打标签 5.3 镜像上推 6. server 节点 7. client 节点 8. 在 server 节点启动 9. 查看运行…

OpenCV的学习大纲

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,广泛用于各种计算机视觉应用中。以下是一个基本的OpenCV学习大纲,帮助初学者系统地学习OpenCV。 基础知识 计算机视觉简介:了解计算机…

Baidu Comate专业版90天使用福利免费送,AI编码解放程序员双手

具体的能力介绍和示例不赘述,可直接参考:Comate官网:Baidu Comate Coding mate, Pair you create 基于文心大模型,结合百度编程大数据,为你生成优质编程代码 你的AI编程助手,你的编码效率提升好帮手 Baidu…

C语言| 冒泡排序-从大到小-

【冒泡排序】最基本的排序方法,一定要掌握。 【冒泡排序的原理】 从左往右,相邻元素进行比较。 每次比较一轮,就会找到序列中最大的一个元素或者最小的元素。 这个数就会从序列的最右边冒出来,所以叫冒泡排序。 以从小到大排序为…

基于51单片机的RFID门禁系统-LCD12864显示

一.硬件方案 本RFID系统设计可分为硬件部分和软件部分。硬件部分以MFRC522射频识别模块为核心,结合主控模块STC89C52设计系统的外围硬件电路,实现对射频卡的控制与MCU之间的互通。软件部分采用C语言进行系统的下位机程序的开发,完成与IC卡之…

【C++进阶学习】第四弹——多态——迈向C++更深处的关键一步

前言: 在前面我们已经学习了C中继承的相关知识,已经体会到C在与C语言的对比中的便捷性,但是有一些问题并没有被解决,比如继承中如何使不同的派生类公用基类的一个函数,这就需要多态的知识,而且,…

数据可视化期末考试(编程)

1.KNN 1.新增数据的分类 import pandas as pd # 您的原始数据字典 data { 电影名称: [电影1, 电影2, 电影3, 电影4, 电影5], 打斗镜头: [10, 5, 108, 115, 20], 接吻镜头: [110, 89, 5, 8, 200], 电影类型: [爱情片, 爱情片, 动作片, 动作片, 爱情片] } …