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

索引失效情况

  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.mzph.cn/diannao/35167.shtml

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

相关文章

【Linux】进程信号_1

文章目录 八、进程信号1.信号 未完待续 八、进程信号 1.信号 信号和信号量之间没有任何关系。信号是Linux系统提供的让用户/进程给其他进程发送异步信息的一种方式。 常见信号: 当信号产生时,可选的处理方式有三种:①忽略此信号。②执行该…

小程序注册

【 一 】小程序注册 微信公众平台 https://mp.weixin.qq.com/ https://mp.weixin.qq.com/注册 邮箱激活 小程序账户注册 微信小程序配置 微信小程序开发流程 添加项目成员 【 二 】云服务 lass 基础设施服务(组装机) 你买了一大堆的电脑配件&#x…

AI早班车2024.6.25

全球AI新闻速递 1.高通:开放 AI 模型,帮助开发者打造骁龙 X Elite 平台智能应用。 2.OpenAI:收购数据库分析公司Rockset。 3.大众海外版车型支持 ChatGPT。 4.乐聚夸父人形机器人,搭载华为云盘古具身智能大模型。 5.微软正努力…

Day45

Day45 jQuery动画 显示和隐藏 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><script src"js/jquery-1.8.2.js" type"text/javascript" charset"utf-8"></script&…

Linux系统移动光标类命令

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

iHRM人力资源管理系统测试用例集

1、初始化项目环境 1&#xff09;初始化用例集 2&#xff09;初始化环境&#xff1a;测试环境&#xff0c;生产环境&#xff08;不同环境对应不同的url&#xff0c;在进行用例集测试之前一定要指定环境&#xff09; 3&#xff09;单接口模块 从Excel表格的测试用例文档中提…

云南省森林管理新篇章:可视化大屏引领绿色智慧革命

在云南省这片绿意盎然的土地上&#xff0c;森林不仅是自然的宝藏&#xff0c;更是生态的守护者。 想象一下&#xff0c;站在巨大的屏幕前&#xff0c;云南省的森林分布、生长状况、病虫害情况等信息一目了然&#xff0c;仿佛拥有了一双能够洞察森林奥秘的“智慧眼”。这正是森林…

输入/输出文字

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在海龟绘图中&#xff0c;也可以输入或者输出文字&#xff0c;下面分别进行介绍。 1 输出文字 输出文字可以使用write()方法来实现&#xff0c;语…

使用Python实现手势替代鼠标操作并生成.exe可执行文件

使用Python实现手势替代鼠标操作并生成.exe可执行文件 在现代计算机交互中&#xff0c;手势识别作为一种自然的人机交互方式&#xff0c;逐渐受到人们的关注。本文将介绍如何使用Python实现手势替代鼠标操作&#xff0c;并生成一个可执行的.exe文件&#xff0c;使得这项技术更…

python常见概念

文章目录 1.python是什么&#xff1f;2.编辑器的选择——pycharm3.第一个python程序4.print函数5.关键字介绍6.python的注释方式7.python语句分类 1.python是什么&#xff1f; Python 是一种面向对象的解释性的计算机程序设计语言&#xff0c;也是一种功能强大而完善的通用型语…

浊度传感器设备的监测控制和智慧运维

浊度传感器是一种用于测量液体中悬浮颗粒浓度从而反映液体浊度的设备。 其工作原理主要基于以下几种常见方式&#xff1a; 1. 散射光测量原理&#xff1a;当光线穿过含有悬浮颗粒的液体时&#xff0c;颗粒会使光线发生散射。传感器通过测量特定角度的散射光强度来确定浊度。散…

数据中台/数据仓库必问的数量质量控制面试题

目录 什么是数据质量?如何定义高质量的数据? 数据质量的五个维度是什么? 解释“准确性”在数据质量中的含义。 数据清洗与数据质量控制之间的关系是什么? 数据质量评估的常用方法有哪些? 如何建立数据质量评分体系? 数据治理与数据质量控制的关系是什么? 描述一…

MySQL常用的函数

1、concat&#xff08;a&#xff0c;b&#xff09;&#xff1a;把传入的参数连成一个字符串。 2、lower()/upper()&#xff1a;转换为小写/转换为大写。 3、replace&#xff08;&#xff09;&#xff1a;替换字符串。 4、trim&#xff08;&#xff09;&#xff1a;去掉开头和…

入门 PyTorch ,这70个操作技巧就够了

Pytorch 是当下最流行的算法框架&#xff0c;很多大模型都是基于Pytorch 搭建而成&#xff0c;它提供了大量操作用于创建和训练神经网络。 今天给大家分享 Pytorch 的19个方面&#xff0c;涉及到70个细节操作&#xff0c;这部分内容梳理花了我一天的时间&#xff0c;喜欢记得点…

骑马与砍杀战团mod制作-基础-对话制作笔记(四)

骑马与砍杀战团mod制作-基础-对话制作笔记&#xff08;四&#xff09; 资料来源 学习的资料来源&#xff1a; b站【三啸解说】手把手教你做【骑砍】MOD&#xff0c;基础篇&#xff0c;链接为&#xff1a; https://www.bilibili.com/video/BV19x411Q7No?p4&vd_sourcea507…

免费领!系统学习上位机编程的流程与基础教程

上位机电气自动化plc编程全套入门教程工具 华山编程导师根据当前招聘需求的关键点&#xff0c;原创录制了一套系统的学习流程和基础教程&#xff0c;帮助你从快速入门到掌握上位机编程的技能。 二. 学习准备 为了更好地学习并实现80%以上的代码运行&#xff0c;建议准备一个工…

Android音频系统

最近在做UAC的项目&#xff0c;大概就是接收内核UAC的事件&#xff0c;也就是声音相关事件。然后就是pcm_read和AudioTrackr->write之间互传。感觉略微有点奇怪&#xff0c;所以简单总结一下。 1 UAC的简要流程 open_netlink_socket 打开内核窗口&#xff0c;类似于ioctl。…

[leetcode]valid-triangle-number. 有效三角形的个数

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int triangleNumber(vector<int>& nums) {int n nums.size();sort(nums.begin(), nums.end());int ans 0;for (int i 0; i < n; i) {for (int j i 1; j < n; j) {int left j 1, righ…

大模型RAG技术:构建高效、可信赖的知识检索系统

前言 LLM 问题 幻觉&#xff1a;在没有答案的情况下提供虚假信息。 过时&#xff1a;当用户需要特定的当前响应时&#xff0c;提供过时或通用的信息。 来源&#xff1a;从非权威来源创建响应。由于术语混淆&#xff0c;不同的培训来源使用相同的术语来谈论不同的事情&#…

网络构建和设计方法_1.网络需求分析

1.网络需求分析 网络需求分析是网络构建及开发过程的起始环节&#xff0c;也是极其重要的阶段。在该阶段&#xff0c;可尽早明确客户使用网络的真实用途或痛点&#xff0c;以便为后续能够构建和设计出更贴近客户真实诉求的网络打下坚实基础&#xff0c;前期的网络需求分析至关…