mysql索引优化

  • 索引优化

索引优化

# 创建表 和数据
create table IF NOT EXISTS staffs(
id int primary key auto_increment,
`NAME` varchar(24) not null default '' COMMENT'姓名',
age int not null default 0 COMMENT'年龄',
pos varchar(24) not null default '' COMMENT'职位',
add_time TIMESTAMP  not null default CURRENT_TIMESTAMP  COMMENT'入职时间'
);insert into staffs(`NAME`,age,pos,add_time) values('z3',22,'manager',NOW());insert into staffs(`NAME`,age,pos,add_time) values('judy',22,'dev',NOW());insert into staffs(`NAME`,age,pos,add_time) values('gc',22,'dev',NOW());# 添加索引
alter table staffs add index idx(name , age,pos);

分析该数据列:
explain select * from staffs where name = ‘z3’ and age = ‘z3’ and pos = ‘123’

explain select * from staffs where name = ‘z3’

explain select * from staffs where name = ‘z3’ and pos = ‘123’

explain select * from staffs where age = ‘z3’ and pos = ‘123’

1,复合索引,需要按照建索引的顺序列查询,如果中间去掉了一列后,则后面的索引会失效,如果第一列索引都不匹配,则索引全失效

explain select * from staffs where name = ‘z3’

explain select * from staffs where left(name,4) = ‘z3’

2,在索引列上做任何操作(计算,函数、(自动或手动)的类型转换),会导致索引失效而转向全表的扫描
explain select * from staffs where name = ‘z3’ and age > ‘3’ and pos = ‘123’

3,存储引擎不能使用索引中范围条件右边的列(也就是范围条件后面的索引会失效)

explain select name,age,pos from staffs where name = ‘z3’ and age = ‘3’ and pos = ‘123’

4,尽量使用覆盖索引(只访问索引列上存在的字段),减少select * 的查询(同时如果此时以3的示例,效率也会更高)

explain select * from staffs where name <> ‘z3’

5,mysql在使用不等号(!= 或 <>) 的时候,会导致无法使用索引会导致全表扫描(但是 select 索引列 from … 不会导致索引失效,因为用到覆盖索引了)

explain select * from staffs where name is null

explain select * from staffs where name is not null

6,is null 或 is not null 也无法使用索引

explain select * from staffs where name like ‘judy%’

explain select * from staffs where name like ‘%judy%’

explain select * from staffs where name like ‘%judy’

like 百分号最好放右边,才会避免索引失效,且后面的索引也不会失效

那么如果愣头轻,两遍都要百分号怎么办
explain select name from staffs where name like ‘%judy%’

7,两遍百分号,查询字段如果是覆盖索引,那么索引页不会失效了

explain select * from staffs where name = ‘33’

explain select * from staffs where name = 33

8,字符串查询不加单引号索引会失效(同时也就是2演示所说,(自动或手动)的类型转换)
explain select * from staffs where name = ‘33’ or name = ‘123’


9,少用or,用它连接的时候索引会失效

mysql 索引(2)(索引失效的问题及解决)相关推荐

  1. mysql 加索引不起作用_mysql加索引及索引失效的情况

    前言:B+TREE索引的本质是多路绝对平衡查找树,磁盘指针,相当于书的目录,索引不是越多越好. 一:如何加索引 1.PRIMARY  KEY(主键索引) mysql>ALTER  TABLE   ...

  2. mysql left join 索引失效_MySQL索引列上做操作导致索引失效案例分析

    索引列上做操作导致索引失效 通常我们认为只要建立索引就可以万事大吉,以为只要建立就一定会使用到,可其实在索引列上的计算.函数.类型转换都可能导致索引失效,所以我们不仅要会创建索引,更重要的是如何正确的 ...

  3. MySQL索引原理、失效情况

    声明:本文是小编在学习过程中,东拼西凑整理,如有雷同,纯属借鉴. Mysql5.7的版本, InnoDB引擎 目录 1 mysql索引知识 1.1 B+Tree索引 1.2 主键索引和普通索引的区别 ...

  4. mysql模糊查询索引失效_MySql学习笔记(九):索引失效

    数据准备:CREATE TABLE `t_blog` ( `id` int(11) NOT NULL auto_increment, `title` varchar(50) default NULL, ...

  5. MySQL高级:索引优化之防止索引失效

    前言:数据库索引优化,但是可能出现索引失效,我们该怎样防止这种情况发生呢>> 文章目录 1. 案例建表: 1.1 staffs表 1.2 建立索引: 2.案例:索引失效 2.1 全面匹配索 ...

  6. mysql 子查询索引失效_mysql 索引失效的情况

    索引失效的几种情况 1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因) 要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引 2.对于多列索引,不是使用 ...

  7. 文件服务器索引失效,SQL优化 MySQL版 – 避免索引失效原则(一)

    避免索引失效原则(一) 精力有限,剩余的失效原则将会在 <避免索引失效原则(二)>中连载出来,请谅解 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 避免索引失效的一些原 ...

  8. mysql自动无序索引_SQL优化 MySQL版 - 避免索引失效原则(一)

    作者 : Stanley 罗昊 避免索引失效的一些原则 我们编写SQL语句后会进行添加一些索引进行优化,但是有时候确实建了索引,但索引有时候会失效: 比如在模糊查询使用 in 关键字的时候索引就失效了 ...

  9. mysql行锁索引问题_Mysql锁机制--索引失效导致行锁变表锁

    =============== Tips:在阅读本文前,最好先阅读 这篇(Mysql锁机制--行锁)文章~ 在上篇文章中,我们看到InnoDB默认的行锁可以使得操作不同行时不会产生相互影响.不会阻塞, ...

最新文章

  1. 《深入理解Nginx》阅读与实践(四):简单的HTTP过滤模块
  2. 人工智能实战_第七次作业_杨佳宁(2)
  3. 辅助类BinaryTreeNodeLeftChildRightSibling(左孩子右兄弟,二叉树结点)
  4. 阿里云数据中台助力零售耐消品新客获取与转化
  5. 360浏览器设置多标签操作步骤
  6. limit offset
  7. python 线性规划问题_使用Python进行线性规划示例
  8. 如何绘制高大上的词云图?
  9. type python django models_Python菜鸟之路:Django ModelForm的使用
  10. Atitit 图像处理的摩西五经attilax总结
  11. JavaWeb9大内置对象的作用与作用域
  12. xp安装python3.4_32位XP系统 Python3.4.4安装scrapy1.6.0
  13. 2021国赛数学建模赛题与分析
  14. 文献检索——Web of Science|CSDN创作打卡
  15. mumu显示连接服务器超时,网易mumu模拟器安装不了 网易mumu模拟器安装好久解决方法...
  16. 【UE4】Object has overlapping UVs不借助外部软件就能解决的方法
  17. dateadd函数转成oracle,oracle dateadd函数
  18. 物联网毕业设计-选题推荐
  19. activiti-流程变量
  20. 掏心掏肺分享,大学四年我是怎么学操作系统和计算机网络的?

热门文章

  1. 备案提示 尊敬的ICP用户: 您的短信核验失败,请您重新验证
  2. 【lphtw】第五弹笔记ex41-ex46
  3. JAVA-----乱码的处理 乱码的解决方法总结
  4. 安全狗入选信通院“业务安全推进计划”名单
  5. Android屏幕旋转后的变更--ConfigChange
  6. Linux下Apache服务的部署和配置
  7. 【渝粤教育】广东开放大学 古代汉语 形成性考核 (28)
  8. 15款最好用的腾讯短链接(url.cn接口)批量在线生成接口
  9. 移动互联网下一章(转载)
  10. excel VBA快递查询