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

    一、执行计划有什么用?

     二、主要指标:

    1. select_type
    • SIMPLE:简单的查询(没有union或子查询)
    • PRIMARY:最外层的查询(有union或子查询)
    • DERIVED:衍生表查询(FROM语句中的子查询)

    2. type
    • 从优到差排序如下:
    const:只匹配一行,根据主键或唯一键进行查询
    eq_ref:单行关联查询,根据主键或唯一键进行join
    ref:索引键值查询,根据普通索引进行查询或join
    range:索引范围查询
    index:索引扫描查询
    all:全表扫描查询

     3. possible_keys

    优化器可能用到的索引

    4. key

    实际用到的索引,没有则为null

    5. rows

    预估检查行数

    三、执行计划的原则
    • 查询类型保持为SIMPLE
    • 避免index和all
    • 确保用到索引,key不能为NULL • 检查行数rows越少越好
    • 禁止temporary(MySQL需要进行额外的排序来获取数据)和filesort(MySQL需要创建临时表来存放数据)

    四、MySQL性能规范:
    规范1
    禁止 Select *
    禁止 Or,使用Union(All)
    禁止 Select for update(用乐观锁)
    禁止 Delete(特别是全量delete),用Update做 软删除
    禁止关联子查询
    禁止条件字段函数,与隐式类型转换

    规范2
    • 一切Batch化:
    limit M, N,不超过100ms
    Batch insert :1000~5000行一个批次,操 作时间<1s
    IN(id1,id2 , ... , idn):列表控制在100~ 500,响应时间<100ms

    规范3
    • 禁止执行计划中的Filesort: – 合理的索引
    Order by NULL避免多余排序
    使用Join/Group by/Distinct,必须参考 filesort原则

     
  • 相关阅读:
    js全局变量
    $.getJSON异步请求和同步请求
    让js中的函数只有一次有效调用
    两个div并排显示,当浏览器界面缩小时会出现换行
    jquery获取窗口和文档的高度和宽度
    后台传带引号(")的数据需要注意
    C# dynamic
    (转)数据库函数解析JSON字符串
    Unicode和UTF-8
    用户通过浏览器修改表单隐藏域
  • 原文地址:https://www.cnblogs.com/unknows/p/11810626.html
Copyright © 2011-2022 走看看