zoukankan      html  css  js  c++  java
  • mysql sql优化及注意事项

    • sql优化分析

    通过slow_log等方式可以捕获慢查询sql,然后就是减少其对io和cpu的使用(不合理的索引、不必要的数据访问和排序)
    当我们面对具体的sql时,首先查看其执行计划
    A.看其是否使用索引
    B.查看其查询的记录数
    C.确定索引的代价是否过高
    D.是否可以使用复合索引
    E.是否有“using temporary”
    F.是否有“using filesort”

    • 创建高效索引

    mysql的innodb有自己特殊的聚集索引(数据是按聚集索引的顺序存储的并和索引存储在一起),索引访问效率较高,次
    要索引是通过先找到pk聚集索引,然后才能找到数据。
    单列索引
    单列索引比较简单,就是对单个列创建的索引,主键索引最好选择int类型,提高性能。
    复合索引
    复合索引是多列组合而成的索引,过滤效果越好的越放在前面,尽量通过索引完成过滤,回表只是取出额外的字段,当然如果
    不需要回表,只扫描索引就可以获取所需数据最好了

    • sql写法注意事项

    1)禁止3表以上的join
    2)避免"select *"和排序功能共同使用
    3)用jion替换子查询
    4)用union all替换union
    5)避免数据类型的转换,同数据类型比较
    6)避免排序(通过索引或减少排序记录数)
    7)对数据尽早过滤(复合索引过滤性更好的字段放的更靠前;尽量加少最后join结果集的数量)
    8)把大sql拆分为多小sql
    9)如果只是分组,用”group by a1 order by null“替换“group by a1”去除排序
    10)禁止索引null列
    11)字符例是否是前缀索引

    转自:http://blog.csdn.net/wyzxg/article/details/7598964

  • 相关阅读:
    python3.6下安装wingIDE破解方法
    Python 列表list 和 字符串str 互转
    c# 读取txt文件并分隔
    基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系
    Jquery ajax动态更新下拉列表的内容
    vs2015使用技巧-------- 查看类关系图
    Dapper 批量操作sql
    Linq批量建表
    WebRequest的get及post提交
    git -- 常用命令
  • 原文地址:https://www.cnblogs.com/olmlo/p/4809009.html
Copyright © 2011-2022 走看看