mysql 不等于 优化_Mysql优化
1. 策略1.尽量全值匹配
CREATE TABLE `staffs`(
id int primary key auto_increment,
name varchar(24) not null default "" comment'姓名',
age int not null default 0 comment '年龄',
pos varchar(20) not null default "" comment'职位',
add_time timestamp not null default current_timestamp comment '入职时间'
)charset utf8 comment '员工记录表';
insert into staffs(name,age,pos,add_time) values('z3',22,'manage',now());
insert into staffs(name,age,pos,add_time) values('july',23,'dev',now());
insert into staffs(name,age,pos,add_time) values('2000',23,'dev',now());
alter table staffs add index idx_staffs_nameAgePos(name,age,pos);
EXPLAIN SELECT * FROM staffs WHERE NAME = 'July';
EXPLAIN SELECT * FROM staffs WHERE NAME = 'July' AND age = 25;
EXPLAIN SELECT * FROM staffs WHERE NAME = 'July' AND age = 25 AND pos = 'dev'
当建立了索引列后,能在wherel条件中使用索引的尽量所用。
2. 策略2.最佳左前缀法则
如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不跳过索引中的列(和顺序无关,但是不能丢)。
EXPLAIN SELECT * FROM staffs WHERE age = 25 AND pos = 'dev'
EXPLAIN SELECT * FROM staffs WHERE pos = 'dev'
EXPLAIN SELECT * FROM staffs WHERE NAME = 'July'
3. 策略3.不在索引列上做任何操作
不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描
EXPLAIN SELECT * FROM staffs WHERE NAME = 'July';
EXPLAIN SELECT * FROM staffs WHERE left(NAME,4) = 'July';
4. 策略4.范围条件放最后
EXPLAIN SELECT * FROM staffs WHERE NAME = 'July' ;
EXPLAIN SELECT * FROM staffs WHERE NAME = 'July' and age =22;
EXPLAIN SELECT * FROM staffs WHERE NAME = 'July' and age =22 and pos='manager'
中间有范围查询会导致后面的索引列全部失效
EXPLAIN SELECT * FROM staffs WHERE NAME = 'July' and age >22 and pos='manager'
5.策略5.覆盖索引尽量用
尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select *
EXPLAIN SELECT * FROM staffs WHERE NAME = 'July' and age =22 and pos='manager'
EXPLAIN SELECT name,age,pos FROM staffs WHERE NAME = 'July' and age =22 and pos='manager'
EXPLAIN SELECT * FROM staffs WHERE NAME = 'July' and age >22 and pos='manager'
EXPLAIN SELECT name,age,pos FROM staffs WHERE NAME = 'July' and age >22 and pos='manager'
6.策略6.不等于要甚用
mysql 在使用不等于(!=或者<>)的时候无法使用索引会导致全表扫描
EXPLAIN SELECT * FROM staffs WHERE NAME = 'July';
EXPLAIN SELECT * FROM staffs WHERE NAME != 'July';
EXPLAIN SELECT * FROM staffs WHERE NAME <> 'July';
如果定要需要使用不等于,请用覆盖索引
EXPLAIN SELECT name,age,pos FROM staffs WHERE NAME != 'July';
EXPLAIN SELECT name,age,pos FROM staffs WHERE NAME <> 'July';
7. 策略7.Null/Not 有影响
注意null/not null对索引的可能影响
7.1. 自定定义为NOT NULL
EXPLAIN select * from staffs where name is null
EXPLAIN select * from staffs where name is not null
在字段为not null的情况下,使用is null或is not null会导致索引失效
解决方式:覆盖索引
EXPLAIN select name,age,pos from staffs where name is not null
7.2. 自定义为NULL或者不定义
EXPLAIN select * from staffs2 where name is null
EXPLAIN select * from staffs2 where name is not null
EXPLAIN select * from staffs2 where name is not null
Is not null 的情况会导致索引失效
解决方式:覆盖索引
EXPLAIN select name,age,pos from staffs where name is not null
8. 策略8.Like查询要当心
like以通配符开头('%abc...')mysql索引失效会变成全表扫描的操作
EXPLAIN select * from staffs where name ='july'
EXPLAIN select * from staffs where name like '%july%'
EXPLAIN select * from staffs where name like '%july'
EXPLAIN select * from staffs where name like 'july%'
解决方式:覆盖索引
EXPLAIN select name,age,pos from staffs where name like '%july%'
9. 策略9.字符类型加引号
字符串不加单引号索引失效
EXPLAIN select * from staffs where name = 917
解决方式:覆盖索引
EXPLAIN select name,age,pos from staffs where name = 917
解决方式:请加引号
10. 策略10.OR改UNION效率高
EXPLAIN
select * from staffs where name='July' or name = 'z3'
EXPLAIN
select * from staffs where name='July'
UNION
select * from staffs where name = 'z3'
解决方式:覆盖索引
EXPLAIN
select name,age from staffs where name='July' or name = 'z3'
mysql 不等于 优化_Mysql优化相关推荐
- mysql字段优化_MySQL优化(1):字段的设计
Web项目中,当Java或者Go等语言速度提升到瓶颈的时候,我们需要关心MySQL的优化 可以优化的方面有很多:设计表.负载均衡.读写分离.SQL语句优化等 (1)IP地址设计 例如我们需要存储IP地 ...
- 有关mysql的清理与优化_mysql优化点整理
优化sql一般步骤: 1.通过show (session 或者 global) status 来查看( 当前连接 或者 数据库上次开机以来 )的服务器状态信息,默认是session 例如: show ...
- mysql 执行效率命令_MySQL优化--explain 分析sql语句执行效率
MySQL优化--explain 分析sql语句执行效率 explain 命令 explain 命令在解决数据库性能上市第一推荐使用命令,大部分的性能问题可以通过此命令来简单解决,explain可以用 ...
- mysql执行计划重用_MySQL 优化之EXPLAN执行计划
MySQL优化之EXPLAN执行计划 ** 备注 ** 本文改编自https://www.processon.com/view/5d4fe8f4e4b04399f5a0303e?fromnew=1#m ...
- mysql优化1001mysql优化_mysql优化之基础规范
优化包含建表规约.SQL 规约.索引规约三个部分,每部分的每一条都有强制.建议两个级别,大家在参考时,根据自己的情况来权衡. 建表规约 [强制]:①存储引擎必须使用 InnoDB 解读:InnoDB ...
- mysql防止索引崩溃_MySQL优化之避免索引失效的方法
在上一篇文章中,通过分析执行计划的字段说明,大体说了一下索引优化过程中的一些注意点,那么如何才能避免索引失效呢?本篇文章将来讨论这个问题. 避免索引失效的常见方法 1.对于复合索引的使用,应按照索引建 ...
- mysql+index组合索引_MySQL 优化之 index merge(索引合并)
标签: MySQL5.0之前,一条语句中一个表只能使用一个索引,无法同时使用多个索引.但是从5.1开始,引入了 index merge 优化技术,对同一个表可以使用多个索引.理解了 index mer ...
- mysql改国标码_MySQL 优化实施方案
优化的哲学 优化风险 优化设计到变更,变更就有风险 优化方向 在数据库优化上有两个主要方面:即安全与性能.(CAP) 安全 ---> 数据可持续性 一致 性能 ---> 数据的高性能访问 ...
- mysql 查询慢 分析_MySQL优化:定位慢查询的两种方法以及使用explain分析SQL
一条SQL查询语句在经过MySQL查询优化器处理后会生成一个所谓的执行计划,这个执行计划展示了具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等. 本章的内容就 ...
- mysql结构优化_MySQL优化----数据库结构优化
数据库结构优化 选择合适的数据类型 数据类型的选择,重点在于合适二字,如何确定选择的数据类型是否合适? 1.使用可以存下你的数据的最小的数据类型. 2.使用简单的数据类型.Int要比carchar类型 ...
最新文章
- LDO和DC-DC有什么不同?如何选型?
- 启动HBase抛出org.apache.hadoop.hbase.ClockOutOfSyncException异常:hmaster正常,节点hregionserver启动失败
- DOM和Diff算法你应该知道的那些事,快收藏!
- 【解题报告】Leecode 438. 找到字符串中所有字母异位词——Leecode每日一题系列
- TreeSet类的排序
- docker 部署Python项目 以及dockerfile文件的编写
- kali升级python3.6_kali下将Python2.x切换至Python3.x
- ASP.NET MVC Razor视图引擎
- layui date插件设置不能跨月查询
- java 用redis如何处理电商平台,秒杀、抢购超卖
- [CVE-2021-45105] Apache Log4j2 漏洞复现与原理详细分析
- python strftime时分秒_python如何把秒换成时分秒
- centos桌面版配置ip_CentOS7安装GNOME可视化界面和如何配置IP地址
- 随笔---Beego中的routers包个人的理解
- 如何把视频mp4转换mp3音乐
- LTE学习笔记3之物理层信道与信号
- 踩坑中:TypeError: unsupported operand type(s) for /: 'str' and 'int'
- 什么是gadget,以及64位libc如何泄露的问题
- 导入AAR报错 Failed to transform file 'xxx.aar' to match attributes {artifactType=jar}
- 【美】柯蒂斯·费思 - 海龟交易法则(2012年12月25日)
热门文章
- 基于Fruits-360水果数据集的TensorSpace神经网络3D可视化(水果识别可视化)
- linux QT 结束当前进程_Qt与Web混合开发(一)--简单使用
- WiFi技术概述:WiFi那些事
- 【前端静态资源托管库-CDN】BootCDN资源全线失效
- 席卷全球的大数据发展趋势需要什么?
- License information could not be obtained from Elasticsearch due to Error: Request Timeout after 300
- 从零开始写一个Jison解析器(2/10):学习解析器生成器parser generator的正确姿势
- ubuntu 16.04 Titanxp 安装cuda10.0 cudnn7.6 环境
- 古训良言 之 一百四十八
- 济南市公安局人口数据备份库项目(数据复制)之一