zoukankan      html  css  js  c++  java
  • mysql 索引优化

    前言

    在根据执行计划对SQL进行分析之后,逐步的去优化每个子查询的索引以及成本使用情况,执行计划我的理解就是用来对索引进行逐步的优化的一个过程。让每个查询都尽量使用索引,在索引过程中,索引会经常性失效。

    口诀

    全值匹配我最爱,最左前缀要遵守
    带头大哥不能死,中间兄弟不能断
    索引列上少计算,范围之后全失效
    LIKE符号写最后,覆盖索引不写*
    不等空值还是OR,索引失效要少用
    var引号不能丢,SQL高级也不难
    分组之前必排序,一定要上索引啊
    

    建立索引注意事项

    • 单值索引,尽量选择过滤性更好的字段。【eg: 性别字段,过滤比例为50%,不建议建索引】
    • 组合索引,索引字段的顺序可以按照识别度进行排序,识别度越高,放在越靠前
    • 组合索引,尽量包含where语句中的更多字段
    • 尽可能的根据分析执行计划,统计信息,去调整query的写法达到适合索引的目的

    索引容易失效的几个点

    • 不在索引列上做任何操作【计算,函数,类型转换】,无法使用索引,会全表扫描
    • 组合索引中,如果中间某个字段使用了范围条件,则右边的索引列失效
    • 尽量使用覆盖索引【索引列和查询列一致,即数据直接在索引表中就可以获取】
    • mysql 在使用不等于*(!= or <>)的时候,无法使用索引,会全表扫描
    • is null , is not null 也无法使用索引,故建表时要有默认值
    • like 通配符必须放在索引列的右边,否则索引失效,会全表扫描
    • 字符串不加单引号,索引会失效
    • 少用or , 用它连接索引会失效
  • 相关阅读:
    UE4分支的Git Flow
    手机Soc芯片简介
    游戏性能指标
    UE3客户端加入DS过程
    stereoscopic 3D
    UDK脚本函数性能工具
    vs2015启动崩溃,wpfgfx_v0400.dll加载D3DCompiler_47.dll失败
    UDK命令
    三维图形渲染管线
    【SpringCloud】Spring Cloud Sleuth + Zipkin 服务调用链路追踪(二十五)
  • 原文地址:https://www.cnblogs.com/yinguohai/p/11505480.html
Copyright © 2011-2022 走看看