• 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

  • 相关阅读:
    HDOJ 3547 DIY Cube 解题报告
    一些经典的期望问题

    人生
    BZOJ 4341 [CF253 Printer] 解题报告
    BZOJ 4302 Buildings 解题报告
    OI 回忆录
    PyQt实现测试工具
    PyQt:eg4
    pyQt: eg3
  • 原文地址:https://www.cnblogs.com/olmlo/p/4809009.html
Copyright © 2020-2023  润新知