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

  • 相关阅读:
    C#实现函数根据返回类型重载
    自己动手实现Expression翻译器 – Part Ⅱ
    ld编译链接时默认搜索路径
    出游
    常用网络命令(转贴)
    redhat6.3企业版安装oracle11g过程
    sqlserver2000版本识别
    考IQ的推断题-生日几何?
    Microsoft Visual Studio .NET 系统必备
    101~200之间的素数
  • 原文地址:https://www.cnblogs.com/olmlo/p/4809009.html
Copyright © 2011-2022 走看看