你了解一条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执行顺序的例子,希望大家喜欢。
最新文章
- 设计模式-1-概要(c#版)
- python 04
- SCRUM:第一天任务实现情况
- MySQL数据库 安装图解
- [codeforces 325]B. Stadium and Games
- WCF自定义地址路由映射(不用svc文件)
- DP Hrbust1186青蛙过河
- dispatch_async 子线程,主线程的简单用法
- WPF datagrid 如何隔行变色
- TROUBLE SHOOTING: FRM-30425
- 与众不同 windows phone (26) - Contacts and Calendar(联系人和日历)
- android从中国天气网获取天气
- PHP标准库(SPL)- SplDoublyLinkedList类(双向链表)
- 如何优雅地运用 Chrome (Google)
- C#中抽象类和接口的区别3
- C# 实现Html转JSON
- Ubuntu sudo 免密码之 sudoers 修改
- jjava:将jar包引入环境变量的一个骚操作以及因此搞出来的扑街问题
- [C语言]易错知识点、小知识点复习(1)
- WebService的讲解 和 CXF 的初步使用