zoukankan      html  css  js  c++  java
  • mysql慢查询优化

    一、什么是慢查询 

    MySQL的慢查询,全名是慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句。具体环境中,运行时间超过long_query_time值的SQL语句,则会被记录到慢查询日志中。简单的说就是运行很长时间的sql语句

    二、怎么优化

      1、索引没起作用的情况
            1.1 使用LIKE关键字的查询语句在使用LIKE关键字进行查询的查询语句中,如果匹配字符串的第一个字符为“%”,索引不会起作用。只有“%”不在第一个位置索引才会起作用。

            1.2 使用多列索引的查询语句MySQL可以为多个字段创建索引。一个索引最多可以包括16个字段。对于多列索引,只有查询条件使用了这些字段中的第一个字段时,索引才会被使用。

       2、优化数据库结构
                合理的数据库结构不仅可以使数据库占用更小的磁盘空间,而且能够使查询速度更快。数据库结构的设计,需要考虑数据冗余、查询和更新的速度、字段的数据类型是否合理等多方面的内容。

        2.1. 将字段很多的表分解成多个表 

                对于字段比较多的表,如果有些字段的使用频率很低,可以将这些字段分离出来形成新表。因为当一个表的数据量很大时,会由于使用频率低的字段的存在而变慢。

        2.2. 增加中间表

                对于需要经常联合查询的表,可以建立中间表以提高查询效率。通过建立中间表,把需要经常联合查询的数据插入到中间表中,然后将原来的联合查询改为对中间表的查询,以此来提高查询效率。

       3、分解关联查询

          将一个大的查询分解为多个小查询是很有必要的。

          很多高性能的应用都会对关联查询进行分解,就是可以对每一个表进行一次单表查询,然后将查询结果在应用程序中进行关联,很多场景下这样会更高效。

      4、inner join替代left join /right join
           inner join中的两张表,如: a inner join b,但实际执行的顺序是跟写法的顺序没有半毛钱关系的,最终执行也可能会是b连接a,顺序不是固定死的。如果on条件字段有索引的情况下,同样可以使用上索引。让mysql自己去判断(查询优化器)。具体表的连接顺序和使用索引情况,mysql查询优化器会对每种情况做出成本评估,最终选择最优的那个做为执行计划。

    参考:https://blog.csdn.net/qq_35571554/article/details/82800463



  • 相关阅读:
    实验一:初步认识程序在内存中运行
    读了 东方学帝 的 《薛定谔方程和狄拉克方程等在共量子论中处于什么地位?》
    别跟我说 正电子 是 狄拉克方程 推导 出来 的
    ∫ 1 / ( b / x
    我很好奇 俄罗斯 小哥 数学家 为 华为 解决 的 数学问题 是 什么
    对 潮汐 现象 的 计算机 程序 模拟
    二阶微分 没有意义, 二阶导数 才有意义
    关于 郭峰君 的 d ( x² + y² + z² ) = d ( c² t² )
    圆面积 公式 推导
    理论模型 和 计算能力
  • 原文地址:https://www.cnblogs.com/51python/p/11483039.html
Copyright © 2011-2022 走看看