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

  • 相关阅读:
    让你的 Python 代码优雅又地道
    Python3简单爬虫抓取网页图片
    Python 全集变量
    python-ConfigParser模块【读写配置文件】
    Python 第三方插件库
    Python 安装 lxml 插件
    Python cmd中输入'pip' 不是内部或外部命令,也不是可运行的程序或批处理文件。
    SQLServer代理新建或者编辑作业报错
    Python pycharm 常用快捷键
    python 安装插件 requests、BeautifulSoup
  • 原文地址:https://www.cnblogs.com/sinoknots/p/8409495.html
Copyright © 2011-2022 走看看