zoukankan      html  css  js  c++  java
  • Mysql SQL优化

    SQL优化

    1.SQL优化是一个分析,优化,再分析,再优化的过程。站在执行计划的角度来说,我们这个过程,就是在不断的减少rows的数量。主要步骤有:

    1.1)通过explain 来查看执行计划。通过这一步骤,我们能够分析出,该语句有没有走索引,索引合不合理的重要依据。《读懂MySQL执行计划》

    1.2)缩小范围。例如使用 < > ,between …and。来缩小扫描范围。(对于该类,通常可优化于limit,时间范围等SQL,而且非常有效)。

    1.3)减少连接数量 (对于连接查询,我们必须尽可能减少每个子连接的结果集数量,只包含有效数据)。

    4)避免类型转换。之前我们就谈过,隐式类型转换是最容易疏忽的慢SQL

    1.5)对于主键连续时而且允许的情况下,我们甚至可以使用max(id)来代替count(*)来统计用户数。

    1.6)用 in 代替 or, 少用like,避免使用函数运算。

    2.系统拆分

      对于互联网应用,特别是高并发应用来说,我们遇到多表连接导致慢SQL影响性能时。我们不应一味的追求在SQL上如何优化。更应该考虑这样的设计是否合理,
    是否有拆分的可能性。我甚至认为:系统拆分才是解决慢SQL的终极方法。

    3.报表库

      对于报表库中,有些SQL是无法再进行优化的,为什么这么说呢?没有在线运算,没有离线运算,统计报表如何出?在一定量级的数据表中,
      做统计报表。即使合理的索引,也会比较慢,这时建议将这些SQL放入特定的报表库执行。以免造成主库压力。性能下降。对主流程造成影响。
    4.表结构设计合理性
     业务关联表的结构设计,要具有合理性,尽量在一张表中就能设计出关联关系,尽量避免left|right|inner|join等来链表查询


  • 相关阅读:
    献给正在奋斗的人
    Delphi TRzTreeView 或者TRzCheckTree或者TTreeView离开焦点还显示灰色的选择状态
    笑话(三)
    王永庆建立企业奖励机制
    DbGridEh表格Tile居中,但是内容左对齐的做法
    DelPhi LockWindowUpdate的函数的用法
    Delphi DbgridEh实现鼠标拖动选中列,并使复选框选中
    国足输球,总结原因
    TPath
    TMemoryStream、String与OleVariant互转
  • 原文地址:https://www.cnblogs.com/light-zhang/p/8383580.html
Copyright © 2011-2022 走看看