MySQL学习(13)︱查询分析器与索引的基本使用

EXPLAIN简介

explain命令可以查看SQL语句的执行计划。当explain与SQL语句一起使用时,MySQL将显示来自优化器的有关语句执行计划的信息。也就是说,MySQL解释了它将如何处理语句,包括有关如何联接表以及以何种顺序联接表的信息。
那么,explain能做什么?

  • 分析出表的读取顺序
  • 数据读取操作的操作类型
  • 哪些索引可以使用
  • 哪些索引被实际使用
  • 表之间的引用
  • 每张表有多少行被优化器查询

explain的使用很简单,只需要在SQL语句前面加上explain命令即可,除了select语句之外,explain也能分析insertupdatedelete语句。使用之后,我们可以对explain的结果进行分析,如下图所示在这里插入图片描述

索引的基本使用

索引是一种特殊的数据结构,类似于图书的目录,它能够极大的提升数据库的查询效率。如果没有索引,在查询数据时必须扫描表中的所有记录才能找出符合条件的记录,这种全表扫描的查询效率非常低。生活中常见的索引应用,比如楼层索引、字母索引等。
在这里插入图片描述
在这里插入图片描述
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可以快速地访问数据库表中的特定记录。

  • 数据库的索引好比图书的目录,能够加快数据库的查询记录。
  • 索引是快速搜索的关键,如果不加索引,查找任何一条特定的数据都会进行一次全表扫描。

索引的种类图如下图所示。在这里插入图片描述

  • 创建普通索引:
CREATE INDEX indexName ON tableName(columnName(length));
  • 创建唯一索引:
CREATE UNIQUE INDEX indexName ON tableName(columnName(length));
  • 创建复合索引:
CREATE INDEX indexName ON tableName(columnName1, columnName2, ...);
  • 删除索引:
DROP INDEX [indexName] ON tableName;
  • 查看索引:
SHOW INDEX FROM tableName;

实战中,索引的使用规则与注意事项如下图所示。在这里插入图片描述

例子

1.连接数据库,使用student数据库并展示其所有的数据表

USE student;
SHOW TABLES;

效果图:
在这里插入图片描述
2. 使用select语句查询employee数据表的所有记录

SELECT * FROM employee;

效果图:
在这里插入图片描述
3. 使用两种不同的where条件查询同一条记录,比较用时

SELECT * FROM employee WHERE name = '刘峰';
SELECT * FROM employee WHERE id = 13;

效果图:
在这里插入图片描述
4. 发现上一步的用时几乎一样,或者是没有区别,我们使用explain来分析两条语句的具体差别

EXPLAIN SELECT * FROM employee WHERE name = '刘峰'\G;
EXPLAIN SELECT * FROM employee WHERE id = 13\G;

效果图:
在这里插入图片描述
由此可以看出,当数据量非常庞大时,是否使用索引关系到语句执行的效率
5. 查看employee数据表的索引

SHOW INDEX FROM employee\G;

效果图:
在这里插入图片描述
6. 查看第3步语句的分析结果(未设置索引)

EXPLAIN SELECT * FROM employee WHERE name = '刘峰';

效果图:
在这里插入图片描述
7. 为employee数据表的name字段设置索引,索引名为idx_name

CREATE INDEX idx_name ON employee(name);

效果图:
在这里插入图片描述
8. 查看第3步语句的分析结果(已设置索引)

EXPLAIN SELECT * FROM employee WHERE name = '刘峰';

效果图:
在这里插入图片描述
9. 去掉刚刚设置好的索引

DROP INDEX idx_name ON employee;

效果图:
在这里插入图片描述
10. 显示employee数据表的索引

SHOW INDEX FROM employee\G;

效果图:
在这里插入图片描述
注:本文是博主MySQL学习的总结,不支持任何商用,转载请注明出处!如果你也对MySQL学习有一定的兴趣和理解,欢迎随时找博主交流~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值