zoukankan      html  css  js  c++  java
  • MySQL 执行计划

    1. 执行计划的定义

    什么是执行计划(查询计划) 呢? 执行计划就是一系列的操作步骤。 SQL是声明性语言, 它只告诉数据库要查询什么, 但并不告诉数据库如何去查。数据库所要做的就是基于算法和统计信息计算出一条最佳的访问路径。 这个工作是由优化器来完成的。 优化器会比较不同的执行计划, 然后选择其中最优的一套。

     2. 怎样确认执行计划是否良好

    无论是做研发还是DBA, 都有必要学会EXPLAIN工具的使用。 使用EXPLAIN工具可以确认执行计划是否良好, 查询是否走了合理的索引。 不同版本的MySQL优化器各有不同, 一些优化规则随着版本的发展可能会有变化, 查询的执行计划随着数据的变化也可能会有变化。 对于这类情况可以使用EXPLAIN来验证自己的判断。

    3. Explain命令

    3.1 explain命令的两种格式

    1)EXPLAIN EXTENDED SELECT……

    命令说明:

    此命令将执行计划“反编译”成SELECT语句, 运行SHOW WARNINGS可得到被MySQL优化器优化后的查询语句。

     案例:

    EXPLAIN EXTENDED
    SELECT gi.*, ig.*
    FROM  gi
    LEFT JOIN ig ON gi.foreignkey = ig.primarykey;

    产生的结果如下图:

    2)EXPLAIN PARTITIONS  ....

    命令说明:

    用于分区表的EXPLAIN命令。

    案例:

    EXPLAIN PARTITIONS
    SELECT gi.*, ig.name
    FROM  gi
    LEFT JOIN ig ON gi.id= ig.id;

    产生的结果如下图:

    4.执行计划的局限

    ·EXPLAIN不会告诉你关于触发器、 存储过程的信息或用户自定义函数对查询的影响情况。
    ·EXPLAIN不考虑各种Cache。
    ·EXPLAIN不能显示MySQL在执行查询时所做的优化工作。
    ·部分统计信息是估算的, 并非精确值。
    ·MySQL 5.6之前EXPALIN只能解释SELECT操作, 其他操作需要重写为SELECT后才能查看执行计划。
    ·如果FROM子句里有子查询, 那么MySQL可能会执行这个子查询, 如果有昂贵的子查询或使用了临时表的视图, 那么EXPLAIN其实会有很大的开销。

    -- SinoKnots 著于2018-02-03

  • 相关阅读:
    配置sqlserver端口
    HTML5本地存储之localStorage
    初始化ArrayList的方法
    like 模糊查询 mybatis写法
    关于删除 值的引用 导致入参丢失的问题。
    学生做题分析功能设计(正确率,已做)
    关于商城类项目 商品表如何设计的问题
    修改Mysql的自增Id
    java list转map的几种方式
    jxls 入门及几个比较坑的地方
  • 原文地址:https://www.cnblogs.com/sinoknots/p/8409495.html
Copyright © 2011-2022 走看看