• 怎样优化SQL


    [原则一:选择需要优化的SQL]

    1,选择需要优化的SQL:不是所有的SQL都需要优化,在优化的过程中,首选更需要优化的SQL;
       怎么选择?优先选择优化高并发低消耗的SQL;
      1,1小时请求1W次,1次10个IO;
      2,1小时请求10次,1次1W个IO;
        考虑:
        ①,从单位时间产生的IO总数来说,相同的;
        ②,针对一个SQL,如果我能把10个IO变成7个IO,一小时减少3W个IO;
            针对第二个SQL,如果能把1W个IO变成7K个IO,一小时减少3W个IO;
        ③,从优化难度上讲,1W->7K难的多;
        ④,从整体性能上来说,第一个SQL的优化能够极大的提升系统整体的性能;第二个SQL慢一点,无非也就是10个连接查询慢一点;
    
    2,定位性能瓶颈;
        1,SQL运行较慢有两个影响原因,IO和CPU,明确性能瓶颈所在;
        2,明确优化目标;

    [原则二:从Explain和Profile入手]

    1,任何SQL的优化,都从Explain语句开始;Explain语句能够得到数据库执行该SQL选择的执行计划; 
    2,首先明确需要的执行计划,再使用Explain检查; 
    3,使用profile明确SQL的问题和优化的结果;

    [原则三:永远用小结果集驱动大的结果集]

     注意不是:小表连接大的快,而是结果集 

    [原则四:在索引中完成排序]

    [原则五:使用最小Columns]

    1,减少网络传输数据量; 
    2,特别是需要使用column排序的时候.为什么?MYSQL排序原理,是把所有的column数据全部取出,在排序缓存区排序,再返回结果;
    如果column数据量大,排序区容量不够的时候,就会使用先column排序,再取数据,再返回的多次请求方式;

    [原则六:使用最有效的过滤条件]

    1,过多的WHERE条件不一定能够提高访问性能; 
    2,一定要让where条件使用自己预期的执行计划;

    [原则七:避免复杂的JOIN和子查询]

    1,复杂的JOIN和子查询,需要锁定过多的资源,MYSQL在大量并发情况下处理锁定性能下降较快; 
    2, 不要过多依赖SQL的功能,把复杂的SQL拆分为简单的SQL; 
    3,MySQL子查询性能较低,应尽量避免使用;
  • 相关阅读:
    Spring bean
    spring bean初始化及销毁你必须要掌握的回调方法
    一张图搞懂Spring bean的完整生命周期
    获取Spring的ApplicationContext的几种方式
    你必须了解Spring的生态
    Spring的核心模块解析
    Spring 5.0
    纯分享scp协议如何工作
    我眼中的SAML (Security Assertion Markup Language)
    7z文件格式及其源码的分析(五)
  • 原文地址:https://www.cnblogs.com/tinyj/p/9861345.html
Copyright © 2020-2023  润新知