zoukankan      html  css  js  c++  java
  • Mysql的执行顺序与优化分析

    编写顺序与执行顺序分析

    一条完整的sql语句编写流程应该如下:

      select distinct 查询字段   from 表名  JOIN 表名    ON 连接条件   where 查询条件   group by 分组字段 

      having 分组后条件     order by 排序条件     limit 查询起始位置, 查询条数

    但是在mysql实际执行读取的过程中,它的顺序发生了变化:

      from 表名   ON 连接条件   JOIN 表名    where 查询条件     group by 分组字段

      having 分组后条件     select distinct 查询字段    order by 排序条件     limit 查询起始位置, 查询条数

    整体执行过程:

      1.先对多表进行关系,根据条件找出符合条件的记录

      2.在符合条件的基础上进行再次where条件筛选
      3.对筛选出来的内容进行分组操作
      4.分组完成后, 使用having再次筛选出满足条件的记录
      5.取所满足条件的记录
      6.对取出的记录进行排序
      7.最终从取出的记录当中获取多少条记录显示出来

    执行优化分析

      学习mysql数据库的优化,主要是从这2个方面进行学习

        学习如何写出高质量的sql语句

        学习任何保证创建的索引不会失效

      mysql性能下降主要表现在这2个方面

        执行语句所花费的时间变长

        等待时间变长

      mysql性能下降的主要原因

        查询语句写的不好各种连接,各种子查询导致用不上索引或者没有建立索引

        建立的索引失效建立了索引,在真正执行时,没有用上建立的索引

        关联查询太多join

        服务器调优及和个配置参数导致如果设置的不合理,比例不恰当,也会导致性能下降,sql变慢

     

  • 相关阅读:
    Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-1
    Matlab高级教程_第一篇:Matlab基础知识提炼_06
    利用ubuntu的alias命令来简化许多复杂难打的命令
    无线路由设置
    解决Ubuntu下使用命令行subl 打开Sublime text3无法输入中文的问题
    ubuntu 14.04 lamp 安装与配置
    ubuntu14.04 login loop issue
    机器学习资源大全
    技巧:利用putty通过win7访问ubuntu
    使用XML-RPC进行远程文件共享
  • 原文地址:https://www.cnblogs.com/pcliu/p/11100929.html
Copyright © 2011-2022 走看看