美文网首页
索引执行计划查看(explain)

索引执行计划查看(explain)

作者: 无崖老师 | 来源:发表于2020-03-07 18:31 被阅读0次

1 SQL语句注意项(sql的失效)

1 like查询时,关键字以%,_开头的则索引失效(左原则)
2 or 查询时,左右两侧都要建立索引,如果只有一侧有索引,则索引无效.
3 如果是联合索引的话,单独使用索引查询时,使用左边的关键字索引是有效的,而右边的无效 index(field1,field2)
4 字符串类型的列,在使用where查询时必须加上单引号.

2、测试SQL语句

create table test_1 (
id int primary key auto_increment,
t1 varchar(100),
t2 varchar(100)
)engine=myisam;

insert into test_1 values
(null,'a','a'),
(null,'ab','ab'),
(null,'abc','abc'),
(null,'abcd','abcd');

数据插入成功之后观察


图片.png

3 索引的检索(where)

图片.png

使用explain观察索引的执行计划


图片.png

4 没有索引

图片.png

5 左原则,验证使用%-时索引的失效

  1. 给t1字段增加一个普通的索引
alter table test_1 add index t1(t1);
图片.png
  1. 增加索引之后正常的进行一次查询


    图片.png
  2. 使用like验证索引的失效


    图片.png

不正常的情况,使用在关键字的左边使用%

图片.png 图片.png

6 OR的使用

  1. 验证左边的字段有索引而右边的字段没有索引
图片.png
  1. 给t2这个字段也增加一个索引


    图片.png

7 组合(复合)索引

create table test_2 (
id int primary key auto_increment,
t1 varchar(100),
t2 varchar(100)
)engine=myisam;

insert into test_2 values
(null,'a','a'),
(null,'ab','ab'),
(null,'abc','abc'),
(null,'abcd','abcd');
图片.png

为test_2添加一个复合索引

图片.png
  1. 使用复合索引的查询:


    图片.png
  2. 验证使用t1字段时,看索引是否生效(t1是建立联合索引时左边的字段)


    图片.png
  3. 验证使用t2时,看索引是否生效’


    图片.png

总结:当建立复合索引时,索引右侧的字段单独使用时,索引是失效的.

8 索引覆盖的实现

就是每一个表中字段都建立了,索引,再次执行查询时,就不用去数据文件中查询,只要在索引文件中查询即可,满足条件.

9 如果where后面是字符串类型的数字时,那么就必须要加引号.

insert into test_1 values(null,'1234','12453');

图片.png
  1. 验证字符串型的数字不加引号,看索引是否有效


    图片.png
  2. 验证字符串型的数字添加引号是,索引的使用情况


    图片.png

总结:索引不是越多越好,因为每建立一个索引,索引文件就会变大,当这个文件比较大时,查询的速度依旧是很慢的.但是索引是我们知道的最方便最有效,最廉价的优化手段.

相关文章

  • explain详解

    explain详解 查询sql查询的执行计划,查看sql查询的索引策略 explain使用 explain字段 i...

  • MYSQL explain执行计划解读

    Explain 查看SQL语句的执行计划:分析SQL执行计划,优化SQL及索引策略,run faster. ...

  • MySQL查询性能优化七种武器之链路追踪

    MySQL优化器可以生成Explain执行计划,我们可以通过执行计划查看是否使用了索引,使用了哪种索引? 但是到底...

  • MYSQL执行计划字段详解

    Mysql查看执行计划 explain + sql :输出执行计划。explain extended + sql ...

  • mysql 那些事-sql优化

    show PROCESSLIST 查看进程 explain 查看执行计划 explain PARTITIONS 带...

  • MySQL explain命令实操

    explain作用 explain命令是用来查看一个sql语句的执行计划,可以看出这个sql语句是否使用到索引,是...

  • 索引执行计划查看(explain)

    1 SQL语句注意项(sql的失效) 1 like查询时,关键字以%,_开头的则索引失效(左原则)2 or 查询...

  • Mysql-优化

    查询优化 1、explain查询分析器,查看执行计划 2、索引的设计 3、慢查询日志,调试环境可以开启 4、查询缓...

  • Mysql trace分析SQL优化器

    explain 可以查看 SQL 执行计划,但是无法知道它为什么做这个决策,如果想确定多种索引方案之间是如何选择的...

  • MySQL索引、事务、锁、MVCC简述

    目录 MySQL索引、事务、锁、MVCC简述一、索引1.1 执行计划 Explain1.2 索引结构1.2.1 H...

网友评论

      本文标题:索引执行计划查看(explain)

      本文链接:https://www.haomeiwen.com/subject/jcacdhtx.html