Mysql中如何查看执行计划

yizhihongxing

在 Mysql 中查看执行计划,可以帮助我们优化查询语句,提高查询效率。下面是具体的步骤:

  1. 在执行查询语句之前,先使用 "EXPLAIN" 关键字查看 SQL 语句的执行计划。
    EXPLAIN SELECT * FROM table_name WHERE condition;
    这会输出一张表格,其中包含了 MySQL 优化器如何执行查询语句的详细信息。

  2. 执行计划中的列含义:

  3. id:表示查询语句执行的顺序,id 值越大,执行顺序越靠后。

  4. select_type:表示查询语句的类型,有 SIMPLE、PRIMARY KEY、SUBQUERY、DERIVED 等类型。
  5. table:表示查询涉及的表名。
  6. partitions:表示查询涉及的表分区。
  7. type:表示查询使用的 Join 类型,包括 const、eq_ref、ref、fulltext、unique_subquery、index_subquery、range、index、ALL 等。
  8. possible_keys:表示可能使用的索引列表。
  9. key:表示实际使用的索引。
  10. key_len:表示实际使用的索引长度。
  11. ref:表示与索引列比较或者联结使用的列。
  12. rows:表示扫描的行数。
  13. filtered:表示查询结果过滤的百分比。
  14. Extra:表示一些额外的信息,如 "Using index" 表示使用索引。

  15. 通过执行计划,我们可以判断查询语句是否使用索引,查看查询的效率,如果查询效率低下需要优化时,我们可以尝试添加索引、减少全表扫描、分离复杂的查询语句等方式进行优化。

下面是一个示例:

假设我们有一个名为 "students" 的表,它包含了学生的 ID、姓名、年龄和成绩。我们想要查找年龄为 18 岁的学生姓名和成绩。可以运行如下 SQL语句:

EXPLAIN SELECT name, score FROM students WHERE age=18;

执行计划如下:

+----+-------------+----------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table    | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+----------+------+---------------+------+---------+------+------+-------------+
| 1  | SIMPLE      | students | ref  | age           | age  | 4       |      | 2    | Using where |
+----+-------------+----------+------+---------------+------+---------+------+------+-------------+

上面的执行计划表明,查询使用了索引(age),扫描了2行数据。

另外,MySQL 提供了许多工具来帮助我们分析执行计划,包括 MySQL Workbench、Percona Toolkit 等工具,这些工具可以更加方便地查看执行计划。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql中如何查看执行计划 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • VMware中CentOS设置静态IP的方法

    使用VMware虚拟机中的CentOS系统,如果想要设置静态IP地址,需要按照以下步骤进行操作。 1. 查看当前IP地址和网关 在终端中执行如下命令: ip addr 可以看到当前系统的IP地址和网关。 示例: [root@localhost ~]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 …

    database 2023年5月22日
    00
  • 在windows系统中设置MySQL数据库

    MySQL搭建 效果图 step1:下载安装包 https://downloads.mysql.com/archives/community/ step2:解压后即完成安装 step3:创建 my.ini 配置文件(注意路径) [mysqld] # 默认端口 port=3306 # mysql的安装目录,也是工作目录 basedir=”D:\\mysql-5…

    2023年4月8日
    00
  • Redis持久化-fork操作

    1.fork操作 用于同步操作,   虽然fork同步操作非常快,同步大数据量时,fork就会阻塞主进程 与内存量息息相关,使用的内存越大,耗时越长 info:latest_fork_usec    查看持久化花费的时间,如果持久时间过长,就会造成卡顿 ,假如QPS上万,此时redis正在持久化,持久化时间长,就会造成卡顿   2 改善fork 优先使用物理…

    Redis 2023年4月12日
    00
  • Docker部署搭建WebDav服务的详细过程

    下面就为您详细讲解Docker部署搭建WebDav服务的完整攻略。 Docker部署搭建WebDav服务攻略 1. 为什么要使用Docker 在介绍如何使用Docker搭建WebDav服务之前,我们需要知道Docker是什么以及它在WebDav部署中的优势。 Docker是一款轻量级的虚拟化容器技术,可以在不同的操作系统上运行,不必担心不同操作系统之间的差异…

    database 2023年5月18日
    00
  • Mysql之SQL Mode用法详解

    Mysql之SQL Mode用法详解 什么是SQL Mode? SQL Mode是MySQL数据库中的一个参数,它用来决定哪些操作是合法的,哪些操作是非法的。SQL Mode是MySQL的一个特性,一个相同版本的MySQL可能会有不同的SQL Mode。 SQL Mode的作用 SQL Mode的作用主要有以下几点: 限制从Mysql5.7.4版本增强型SQ…

    database 2023年5月22日
    00
  • 重装系统,新安装IDEA启动项目后,classnotfound:com.mysql.jdbc.Driver

    这个Test connection会自动帮你下载的,但是如果中途一直叫你try again,甚至到后面点这个test connection有弹窗,但是单窗里面的选项你点击后没反应,我是直接卸载IDEA重装了,(浪费一个下午弄这个问题),然后再来一次,就成功了。 我再说一下症状:我新装的IDEA,(重装系统),打开我以前的maven项目试着启动,报错找不到co…

    MySQL 2023年4月12日
    00
  • 使用PHP+Redis实现延迟任务,实现自动取消订单功能

    使用PHP+Redis实现延迟任务,可以通过Redis中的有序集合(sorted set)以及Redis的一些命令来完成。 首先,我们需要在Redis中创建一个有序集合用于存放需要执行的任务,并在任务中设置延时时间。当任务到达指定的延迟时间后,我们可以通过Redis的命令进行处理。 在PHP代码中,可以使用Predis等Redis操作库通过以下步骤完成该功能…

    database 2023年5月22日
    00
  • 解决IDEA错误 Cause: java.sql.SQLException: The server time zone value的问题

    当使用IntelliJ IDEA运行Java项目的时候,可能会遇到以下错误: Caused by: java.sql.SQLException: The server time zone value ‘XXX’ is unrecognized or represents more than one time zone. You must configure …

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部