zoukankan      html  css  js  c++  java
  • 怎么避免写出慢SQL

    在大多数实际的系统中,慢 SQL 消耗掉的数据库资源,往往是正常 SQL 的几倍、几十倍甚至几百倍。

    怎样才能在开发阶段尽量避免写出慢 SQL 呢?

    估算数据量

    慢 SQL 对数据库的影响,是一个量变到质变的过程,对“量”的把握,就很重要。编写一条查询语句的时候,可以依据你要查询数据表的数据总量,估算一下这条查询大致需要遍历多少行数据。

    使用索引

    使用索引可以有效地减少执行查询时遍历数据的行数,提高查询性能。在每次开发新功能,需要给数据库增加一个新的查询时,都要评估一下,是不是有索引可以支撑新的查询语句,如果有必要的话,需要新建索引来支持新增的查询。但是,增加索引付出的代价是,会降低数据插入、删除和更新的性能。增加了索引,在数据变化的时候,不仅要变更数据表里的数据,还要去变更每个索引。所以,对于更新频繁并且对更新性能要求较高的表,可以尽量少建索引。而对于查询较多更新较少的表,可以根据查询的业务逻辑,适当多建一些索引。

    分析 SQL 执行计划

    在你的 SQL 语句前面加上 EXPLAIN 关键字,然后执行这个查询语句就可以了。
    对于复杂的查询,最好使用 SQL 执行计划,事先对查询做一个分析。在 SQL 执行计划的结果中,可以看到查询预估的遍历行数,命中了哪些索引。执行计划也可以很好地帮助你优化你的查询语句。例如:
    EXPLAIN select * from auth_permission where name like 'Can add%';
    在这里插入图片描述

    EXPLAIN select * from auth_permission where left(name,7) = 'Can add’;
    在这里插入图片描述

    优化SQL

    优化SQL,提升查询效率。对于添加的索引列考虑是否会实效的导致全表扫描的情况。

    使用慢查询日志分析

    MySQL 慢查询日志是排查问题 SQL 语句,以及检查当前 MySQL 性能的一个重要功能

    Mysql开启慢查询日志

  • 相关阅读:
    poj2187 Beauty Contest (凸包 + 旋转卡壳)
    codevs1298, hdu1392 (凸包模板)
    Codeforces Round #427 (Div. 2) E. The penguin's game (交互题,二进制分组)
    poj1655 Balancing Act (dp? dfs?)
    poj1654 -- Area (任意多边形面积)
    codeforces#426(div1) B
    poj1011 Sticks (搜索经典好题)
    考试题
    使用SMM框架开发企业级应用-----打印机案例
    使用SMM框架开发企业级应用-----Spring简介即Spring Ioc
  • 原文地址:https://www.cnblogs.com/donghaoblogs/p/12822785.html
Copyright © 2011-2022 走看看