MySQL高级:索引优化之防止索引失效
前言:数据库索引优化,但是可能出现索引失效,我们该怎样防止这种情况发生呢》》
文章目录
- 1. 案例建表:
- 1.1 staffs表
- 1.2 建立索引:
- 2.案例:索引失效
- 2.1 全面匹配索引的字段最好,第一个字段不能少,也不能,跳着使用字段。
- 2.2 不要在索引的列上做任何操作(计算,函数(自动或者手动)类型转化),会导致索引失效而转向全表扫描
- 2.3 存储引擎不能使用索引中范围条件右边的列:
- 2.4 尽量使用索引覆盖 ,少用select *:
- 2.5 在使用 != or<> 导致索引失效,全表扫描
- 2.6 is null 或者 is not null 也会导致索引失效
- 2.7 like以通配符%开头会变成全表扫描
- 2.8 varchar类型 不写单引号,会索引失效!
- 2.9 少用 or ,他也会导致索引失效!
- 3 小总结:
1. 案例建表:
1.1 staffs表
craete table staffs(id int primary key auto_increment,name varchar(20) not null ,age int not null,pos varchar(20) not null comment '职位',add_time timestamp not null)ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into staffs(name,age,pos,add_time)values('z3',18,'manager',now());insert into staffs(name,age,pos,add_time)values('l4',20,'manager',now());insert into staffs(name,age,pos,add_time)values('w5',23,'manager',now());select * from staffs;
1.2 建立索引:
alter table staffs add index idx_staffs_nameAgePos(name,age,pos);
2.案例:索引失效
下面为索引失效的一些情况:
2.1 全面匹配索引的字段最好,第一个字段不能少,也不能,跳着使用字段。
但是注意下面的例子:
直接从所建索引的第二个字段开始,则 type 是 ALL,没有用到索引。索引失效了! 第一个字段不能少!!!
但是如果只有第一个字段,索引是有效的!!!
!这情况就好比是上楼梯:修好的楼梯是一二三楼,而你使用的时候直接用二三楼,那怎么能上去!所有索引失效了!
这个中间字段没有直接有的第三个字段!
发现第一个字段显然用到了自带,但是第三个却灭有!
也不能,跳着使用字段。
!所以在使用的时候最好使用索引的全部字段,不能么有第一个字段,中间字段也不能断,那样索引就失效了
2.2 不要在索引的列上做任何操作(计算,函数(自动或者手动)类型转化),会导致索引失效而转向全表扫描
上面两个 查出来的结果相同,但是第二个用了 left()函数,看看他们两个的过程分析:
显然,第二种索引使用为 null,索引失效了!
2.3 存储引擎不能使用索引中范围条件右边的列:
当我们所查列中包含范围的情况:
我们可以看出 name,age 用到了索引,后面的没用到索引,type 从 ref --》range 效率还降低了
索引又失效了!
!通俗的说就是使用范围的情况之后,索引就失效了
2.4 尽量使用索引覆盖 ,少用select *:
当查询字段是索引所包含的列时候,出现了using index ,索引覆盖!这种情况就比前者更好!
2.5 在使用 != or<> 导致索引失效,全表扫描
看下图:
使用!= 或者 <> 索引失效!
2.6 is null 或者 is not null 也会导致索引失效
看结果:
2.7 like以通配符%开头会变成全表扫描
上图三条sql 除了like后面的%位置不同,其他都一样。可以看出以% 开头都是全部扫描!
通配符的位置不同,查结果不同
但是 必须使用这情况应该怎样解决!
!使用索引覆盖可以优化这种情况
这样就可了!
2.8 varchar类型 不写单引号,会索引失效!
原因是mysql自动产生了类型转化!!!
2.9 少用 or ,他也会导致索引失效!
结果可以查出来,但是过程曲折!
3 小总结:
假设符合索引 inded(a,b,c);
做下面的题!
可看其他案例:三表案例
MySQL高级:索引优化之防止索引失效相关推荐
- mysql覆盖索引解决模糊查询失效_关于MySQL的SQL优化之覆盖索引
前些天,有个同事跟我说:"我写了个SQL,SQL很简单,但是查询速度很慢,并且针对查询条件创建了索引,然而索引却不起作用,你帮我看看有没有办法优化?". 我对他提供的case进行了 ...
- MySQL第10天:MySQL索引优化分析之索引介绍
MySQL索引优化分析之索引简介 1.索引是什么? 2.索引优势.劣势 3.索引分类.基本语法 4.索引结构 5.哪些情况需要创建索引? 6.哪些情况不需要创建索引? ---------------- ...
- Mysql高级-应用优化,查询缓存优化,锁
文章目录 1. 应用优化 1.1 使用连接池 1.2 减少对MySQL的访问 1.2.1 避免对数据进行重复检索 1.2.2 增加cache层 1.3 负载均衡 1.3.1 利用MySQL复制分流查询 ...
- #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
Linux + JVM + Mysql高级性能优化课程 课程名称: Linux + JVM + Mysql高级性能优化 QQ群: 243242580(小白.菜鸟勿进)跟Java.M ...
- Python全栈(三)数据库优化之10.MySQL高级-表优化和索引优化
文章目录 一.单表优化 二.双表优化 三.三表优化 四.索引优化 1.建表: 2.插入数据: 3.建立复合索引: 4.口诀: 全值匹配我最爱: 最左前缀要遵守: 带头大哥不能死: 中间兄弟不能断: 索 ...
- 《MySQL高级篇》八、索引优化与查询优化
文章目录 1. 数据准备 2. 索引失效案例 2.1 全值匹配我最爱 2.2 最左匹配原则 2.3 主键插入顺序 2.4 计算.函数.类型转换(自动或手动)导致索引失效 2.5 范围条件右边的列索引失 ...
- MySQL高级- group by ,order by 索引优化
一:索引失效 1. 2.最佳左前缀法则 4. 8. 使用覆盖索引解决这个问题. 二.索引优化 1.ORDER BY 子句,尽量使用Index方式排序,避免使用FileSort方式排序 MySQL支持两 ...
- MySQL高级 - SQL优化 - 索引提示
使用SQL提示 SQL提示,是优化数据库的一个重要手段,简单来说,就是在SQL语句中加入一些人为的提示来达到优化操作的目的. USE INDEX 在查询语句中表名的后面,添加 use index 来提 ...
- MySQL高级知识(六)——索引优化
前言:索引优化的目的主要是让索引不失效,本篇通过相关案例对索引优化进行讲解. 0.准备 创建经典的tb_emp表. DROP TABLE IF EXISTS `tb_emp`; CREATE TABL ...
最新文章
- 输入重定向,输出重定向,管道相关内容及实现方法
- 汇编语言reg和sreg bp的介绍
- Android -- EventBus使用
- css的checkbox样式变化
- NutzWk 5.2.0 重磅发布,Java 微服务分布式开发框架
- scipy模块计算导数方法(central_diff_weights)
- 数学教师计算机能力提升,数学教师信息技术应用能力提升培训总结.doc
- Spring学习之AOP(面向切面编程)
- QT5开发及实例学习之十四Qt5排版功能
- CentOS 7.2下ELK分析Nginx日志生产实战(高清多图)
- 《剑指offer》面试题24——二叉搜索树的后序遍历序列(C++)
- idea android模拟器无法启动,Flutter Hello world应用程序无法在Android模拟器x86_64上启动...
- 翻译: 3.3. 线性回归的简明实现 pytorch
- 报表工具对比选型系列用例——排名及跨行组统计
- 计算机等级考试的资料,计算机等级考试(资料).pdf
- 什么是cc攻击以及个人网站遭到cc攻击的解决方法
- IDE、SATA、SCSI、SAS、iSCSI
- 6.WIN10 short cut
- 求助:tp-link wr720n路由器,想刷打印服务器!
- (java)Climbing Stairs
热门文章
- RAM与ROM的区别
- session机制详解
- c语言;文件名批量修改要求可以修改整个文件内文件名或后缀名自动,Python批量修改文件名...
- 如何打造团队的认同感
- 解决'python -m pip install --upgrade pip',显示“'python' 不是内部或外部命令,也不是可运行的程序”
- 【原创】从BZOJ2683 简单题中 整 CDQ分治解决三维偏序
- iOS开发者问题答疑——买号、关联、刷评论
- linux 添加快捷命令,linux 添加快捷指令
- CodeForces 85D Sum of Medians Splay | 线段树
- ASP.NET Core 技术内幕与项目实战读后感