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变慢

 

转载于:https://www.cnblogs.com/pcliu/p/11100929.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569265.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java获得指定的开始时间与结束时间之间的所有日期

import java.text.SimpleDateFormat; import java.util.Calendar;public class TimerTest {public static void main(String[] args) throws Exception {String beginDate "2016-07-16";//开始时间String endDate "2016-07-25";//结束时间SimpleDateForm…

linux中umask的使用

在linux创建文件、文件夹的时候会给它们赋予默认的权限,这个默认权限的赋予就是和umask相关的。总结如下: 1:x 执行 2:w 写入 4:r 读取 文件创建的时候的权限为 666与umask的每一位对应相减;如 umask 为…

jieba中文分词源码分析(四)

一、未登录词问题在jieba中文分词的第一节曾提到未登录词问题 中文分词的难点 分词规范,词的定义还不明确 (《统计自然语言处理》宗成庆)歧义切分问题,交集型切分问题,多义组合型切分歧义等 结婚的和尚未结婚的 > 结婚/的&…

hadoop2.4.2集群搭建及hive与mysql集成文档记录

1.修改Linux主机名2.修改IP3.修改主机名和IP的映射关系######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机、阿里云主机等)/etc/hosts里面要配置的是内网IP地址和主机名的映射关系4.关闭防火墙5.ssh免登陆6.安装JDK,配…

mybatis使用过程遇到的一些问题及解决方法

1.传入string单个参数进行判断是 要使用 <if test"_parameter ! null"></if> 2.mybatis批量插入 <insert id"insertSerily" parameterType"java.util.List"> insert into sys_role_resource (id, role_id, resource_id ) valu…

spring boot 与redis 整合

创建项目时需要导入的包 在application.yml 配置文件中配置需要的 spring:datasource:url: jdbc:mysql://localhost:3306/数据库名?useSSLfalse&serverTimezoneAsia/Shanghaiusername: 用户名password: 密码jpa:show-sql: truehibernate:ddl-auto: none #redis 可以不配,默…

Http长连接的例子_亲测可用哦

一、什么事Http长连接&#xff1a;在网上有很多很多关于Http长连接的文章&#xff0c;但是我看了很多都看不懂。自己总结的所谓的http长连接就是在一请求一个页面后&#xff0c;在服务器端不断开http连接&#xff0c;而是通过response一直在定时的往页面客户端刷新数据。 二、s…

不同操作系统上DNS客户端操作区别汇总

结论&#xff1a;windows有DNS缓存&#xff0c;Linux默认无DNS缓存&#xff0c;只能依赖于安装其他软件。 一、不同操作系统的客户端的DNS缓存差别 1、windows 系统中dns 解析器会使用系统的dns缓存来提高dns域名解析效率。 例如&#xff1a; 查看当前的dns cache内容&#xff…

SLAM学习心得——建图

1.建图 我们所谓的地图&#xff0c;即所有路标点的集合。一旦我们确定了路标点的位置&#xff0c;那就可以说我们完成了建图。 地图的作用&#xff1a;&#xff08;1&#xff09;定位 &#xff1b;&#xff08;2&#xff09;导航&#xff1b; &#xff08;3&#xff09;避障&am…

spark2

特点 通用 批处理 迭代式计算 交互查询 流处理 组件 spark core:任务调度 内存管理 容错机制 内部定义了RDDs 提供了很多API &#xff0c;为其他组件提供底层的服务 spark sql&#xff1a;报表统计 streaming :从kafka接收数据做实时统计 mlib&#xff1a;mll 支持横向扩展&am…

Oracle数据库----视图

--创建简单视图--建立用于查询员工号、姓名、工资的视图。create view emp_viewasselect empno,ename,sal from emp; --查询视图select * from emp_view; --创建视图时指定视图的列的别名create view emp_view2(员工号,姓名,工资)asselect empno,ename,sal from emp; --查询视图…

flume通过tcp/udp采集数据并存到kafka配置及操作方式

/*官方提供的kafka sink*/a1.sinks.k1.channel c1a1.sinks.k1.type org.apache.flume.sink.kafka.KafkaSinka1.sinks.k1.kafka.topic mytopica1.sinks.k1.kafka.bootstrap.servers localhost:9092a1.sinks.k1.kafka.flumeBatchSize 20a1.sinks.k1.kafka.producer.acks 1a…

一、免费API调用

一、免费API调用&#xff1a; 免费天气api接口 JS调用示例 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"…

spark 监控--WebUi、Metrics System(转载)

转载自&#xff1a;https://www.cnblogs.com/barrenlake/p/4364644.html Spark 监控相关的部分有WebUi 及 Metrics System; WebUi用于展示Spark 资源状态、Metrics System 整合的指标信息。 Ui相关流程 Spark集群启动之后&#xff0c;我们可以通过Web观察集群状态等信息&#x…

js中使用shiro标签的一个小坑

在jsp页面中使用shiro标签很简单 <shiro:haspermission name"你的权限"> 你的标签 </shiro:haspermission> 这样就可以把标签加上权限了。 但是有时候你的标签是js动态生成的&#xff0c;就像下面的例子&#xff1a; <script type"text/java…

求1-100数字的和

function sum_all(){var result 0;for(var i0;i<100;i){resultresulti;}return result; } var s sum_all(100); console.log(s);// while循环 function sum_all(){var result 0;var i0;while(i<100){i;resultresulti;}return result; } //do while语句 function sum_al…

微信开发--自定义菜单

一、定义几个实体类 public class AccessToken {//这里定义一个AccessToken的实体类&#xff0c;用来保存获取到的accesstokenprivate String token;//获得到的tokenprivate int expireIn;//过期时间public String getToken() {return token;}public void setToken(String toke…

.Net框架理论

.NET框架 .NET Framework是该平台的第一个也是最早的实现。它包括三个主要的应用程序模型 - WPF&#xff0c;Windows窗体&#xff0c;ASP.NET窗体 - 和基类库。 Windows Presentation Foundation&#xff08;WPF&#xff09;是一个UI框架&#xff0c;用于主要为Windows操作系统…

zkCli使用手册

zkClient命令笔记connect host:port 连接到其他的zk服务器&#xff0c;例&#xff1a;connect 192.168.174.222:2181-------------------------------------------------------------------------------------------------------get path [watch] 获取某个节点的数据&#xff0…

浏览器解析JavaScript的原理

JavaScript的特点一般都知道的就是解释执行&#xff0c;逐行执行&#xff0c;就是从上到下依次执行。 JavaScript的执行之前&#xff0c;其实还是有一些操作的&#xff0c;只是没有表现出来 JavaScript的执行过程&#xff1a; 1、语法检测  首先是大致查看有没有基本的语法错…