zoukankan      html  css  js  c++  java
  • mysql 数据库优化之执行计划(explain)简析

    数据库优化是一个比较宽泛的概念,涵盖范围较广。大的层面涉及分布式主从、分库、分表等;小的层面包括连接池使用、复杂查询与简单查询的选择及是否在应用中做数据整合等;具体到sql语句执行效率则需调整相应查询字段,条件字段,索引使用等。

    对于sql语句执行效率,可以通过数据库查看sql语句执行计划来进行优化。

    数据库执行explain 命令,结果如下:

     

    涉及字段含义:

    id:执行顺序号,值越大,越先执行

    select_type:查询类型,普通,联合,子查询等;

        simple:简单查询

        primary:主查询

        subquery:子查询

        drived(衍生):from 列表中包含的查询

        union:联合查询,union之后的

        union:联合查询的结果查询

    table:涉及的表

    type:访问类型,即数据是怎么获取到的

        system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

        const:只需匹配一行数据,如:where primary_key=x

        ref:非唯一性索引扫描,匹配多行

        range:范围匹配,如between、in

        index:取索引列,从索引文件读取

        all:全表扫描

    possible_keys:查询字段包含的索引

    key:使用的索引

    key_len:索引中使用的字节数

    rows:找到所需的记录所需要读取的行数

    extra:额外信息

        Using temporary:使用临时表保存中间结果,group by

        Using filesort:对数据使用一个外部的索引排序,而不是按照表内的索引进行排序读取。也就是说mysql无法利用索引完成的排序操作称为“文件排序”

        Using index:使用了覆盖索引(Covering Index),避免了访问表的数据行,效率高 

        Using where : 表示服务器将存储引擎返回行后再应用where过滤条件

        Impossible WHERE:不可达的查询

        。。。

  • 相关阅读:
    [转]android Intent机制详解
    [转]Android进程与线程基本知识
    HTML背景图片自适应
    边框边界填充理解
    [转]Android 代码自动提示功能
    [转]Windows7:Visual Studio 2008试用版的评估期已经结束解决方法
    eclipse安装、汉化、搭建安卓开发环境
    asp.net控件拖不动。控件错误
    opengl 入门浅学(一)
    opengl 无法定位程序输入点_glutInitWithExit于动态链接库glut32.dll上
  • 原文地址:https://www.cnblogs.com/niejunlei/p/8805748.html
Copyright © 2011-2022 走看看