你了解一条sql的执行顺序吗
sql是后端开发人员经常碰到的问题,我们经常会写这样的sql:select name,id from student where id=12 order by id desc,把这条sql放到数据库中数据库便会给我们返回执行结果,那么有没有好奇这条sql是怎么执行的呐,今天我们就揭开这个神秘的面纱。以mysql为例
一、前言
都知道mysql作为数据库存储系统,可以为我们提供数据存储的功能,同时提供了查询接口供我们去查询数据,从这方面来说,mysql很像一个业务系统,只不过mysql处理的是各种各样的关系型数据。提交给mysql的sql语句是一门语言,类似于常用的java语言,只不过sql语言仅仅是数据库系统可以识别而已,既然是一门语言那么数据库就会去解析去处理,这个处理的过程就是今天要分享的sql的执行顺序。
二、详述
这里有这么一条简单的sql语句
select id,name,address from student where name like '%li%' order by id desc
其执行结果如下,

今天就来分析这个简单的sql的执行顺序。
2.1、from
mysql收到sql语句后,之前的语法解析、语义分析这里暂时不解释,直接分析sql的执行。
第一步是执行from后的语句,也就是加载表中的数据,我们都知道表中的数据是存储在磁盘上的,这里就是把表中的数据加载到内存中,把所有的数据均加载出来,即下面的数据

这时会形成一个表或者称为数据集称为T1
2.2、where
在加载完成以后,便会执行where条件,即从T1中选择符合条件的数据,这里的条件是name like '%li%',也就是name中包含li的数据,即下面的数据

这时形成一个表记为T2
2.3、select
在T2的基础上进行列的选择,也就是执行select后的操作,这里选择的是id name address三列,即下面的数据

这时形成一个表记为T3
2.4、order by
在T3的基础上执行order by操作,这里按照id倒序,即下面的数据

这时形成一个表记为T4
到这里我们的select id,name,address from student where name like '%li%' order by id desc 这样一条sql便执行完成,mysql便会把执行结果返回给用户。
三、总结
本文分析了一条简单sql的执行顺序,通过这样的过程可以很清楚的了解mysql的sql执行原理,进一步加深对sql的理解,接下来会继续为大家分享有关sql执行顺序的例子,希望大家喜欢。

你了解一条sql的执行顺序吗的更多相关文章
- SQL的别名和SQL的执行顺序和SQL优化
SQL的别名 1.不可以在where子句中使用列名的别名,即select name t from emp where t>2999;是不允许的 2.使用别名的好处: 提高SQL的易读性 提高SQ ...
- sql逻辑执行顺序
要知道SQL语句,我想我们有必要知道SQL Server查询分析器怎么执行我们的SQL语句的,我们很多人会看执行计划,或者用Profiler来监视和调优查询语句或者存储过程慢的原因,但是如果我们知道查 ...
- 转摘: CSDN linxianliang5201314 的 blog ------sql解释执行顺序
我们做软件开发的,大部分人都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,如果数据量大,人员流动 大,那么我么还能保证下一段时间系统还能流畅的运行吗?我么 ...
- 如何清除某条SQL的执行计划
如果遇到绑定窥探导致执行计划慢的情况,想要清除某条SQL的执行计划,让它硬解析,找了很久都没有找到直接操作share pool的方法(除非alter system flush shared_pool) ...
- sql解释执行顺序
一.查询的逻辑执行顺序 (1) FROM left_table (3) join_type JOIN right_table (2) ON join_condition (4) WHERE where ...
- SQL子句执行顺序和Join的一点总结
SQL子句执行顺序和Join的一点总结 FROM ON JOIN WHERE GROUP BY WITH CUBE or WITH ROLLUP HAVING SELECT DISTINCT ORDE ...
- 腾讯面试:一条SQL语句执行得很慢的原因有哪些?---不看后悔系列
说实话,这个问题可以涉及到 MySQL 的很多核心知识,可以扯出一大堆,就像要考你计算机网络的知识时,问你"输入URL回车之后,究竟发生了什么"一样,看看你能说出多少了. 之前腾讯 ...
- 一条SQL语句执行得很慢的原因有哪些?
说实话,这个问题可以涉及到 MySQL 的很多核心知识,可以扯出一大堆,就像要考你计算机网络的知识时,问你“输入URL回车之后,究竟发生了什么”一样,看看你能说出多少了. 之前腾讯面试的实话,也问到这 ...
- 一条SQL语句执行得很慢的原因有哪些?(转)
一条 SQL 语句执行的很慢,那是每次执行都很慢呢?还是大多数情况下是正常的,偶尔出现很慢呢?所以我觉得,我们还得分以下两种情况来讨论. 1.大多数情况是正常的,只是偶尔会出现很慢的情况. 2.在数据 ...
随机推荐
- 剑指offer面试题4
1 #include<iostream> 2 using namespace std; 3 4 void replace(char ch[]) { 5 int count = 0; 6 i ...
- OKR工作法读后感
<OKR工作法>把管理思想融入到一则创业故事中,故事细节经过了精心的设计,融入了管理智慧和踩坑填坑经验,每个细节都以小见大,耐人寻味.一千个读者,就有一千个哈姆雷特. 所以这次我不去点评大 ...
- 利用sql语句复制一条或多条记录
sql 复制记录insert into article (id,class,title,content) select id,'2',title,content from article where ...
- 证明n个正数的算术平均数不小于它们的几何平均数
- SpringBoot2.x+mybatis plus3.x集成Activit7版本
最近在写一个开源项目ruoyi-vue-pro,暂时负责Activiti7工作流的搭建,接这个任务一个原因,是比较好奇Activiti7版本与先前的5.6版本究竟有什么区别,因为先前在工作当中,最开始 ...
- Redis详解(二)——
https://www.cnblogs.com/yeya/p/14274948.html https://www.cnblogs.com/liang24/tag/redis/
- Appium问题解决方案(2)- AttributeError:module 'appium.webdriver' has no attribute 'Remote'
背景 运行脚本的时候,就直接报这个错误了,然后去看了下 appium.webdriver 库 结果发现啥都没有,就知道有问题了,然后一步步排查 步骤一 检查Appium-Python-Client 和 ...
- Hive的分桶表
[分桶概述] Hive表分区的实质是分目录(将超大表的数据按指定标准细分到指定目录),且分区的字段不属于Hive表中存在的字段:分桶的实质是分文件(将超大文件的数据按指定标准细分到分桶文件),且分桶的 ...
- 使用Apache poi来编写导出excel的工具类
在JavaWeb开发的需求中,我们会经常看到导出excel的功能需求,然后java并没有提供操作office文档的功能,这个时候我们就需要使用额外的组件来帮助我们完成这项功能了. 很高兴Apache基 ...
- Sentry 后端监控 - 最佳实践(官方教程)
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...