Mysql select查询执行过程
2017-05-02 15:41
253 查看
SQL Select语句完整的执行顺序:
1、from 子句组装来自不同表的数据,包括join 、left join ; 全字段组装
2、where 子句基于指定的条件对记录进行筛选
3、group by 子句将数据划分为多个分组
4、执行select 中的聚促函数,例如count(*),Max(),min()函数
[b]5、执行order by
[/b]
6、[b]执行select,删除多余的字段,并且选定变为别名
[/b]
7、执行having 语句
8、执行limit
假定现在有2张表 ,用户表 和 用户成绩表 ,数据如下
用户表 user 用户成绩表
例子 1: 查出所有成绩都在60分以上的,平均分最高的学生名称 , 并且未删除(is_deleted = 0)
SQL :
分析 : (默认 join 在 where之前 ,这个没法分析判断)
1、where中可以带有 select中未明确标出的字段,表示where查询的时候,join的是所有字段的笛卡尔积
2、如果在having中带有a.is_deleted=0会报错,但是在order by中不会报错 ,说明
order by >select 字段过滤>having
3、在 where中加上 min(b.score)> 60 会报错,说明先where 然后再 group by ,执行聚促函数
1、from 子句组装来自不同表的数据,包括join 、left join ; 全字段组装
2、where 子句基于指定的条件对记录进行筛选
3、group by 子句将数据划分为多个分组
4、执行select 中的聚促函数,例如count(*),Max(),min()函数
[b]5、执行order by
[/b]
6、[b]执行select,删除多余的字段,并且选定变为别名
[/b]
7、执行having 语句
8、执行limit
假定现在有2张表 ,用户表 和 用户成绩表 ,数据如下
用户表 user 用户成绩表
例子 1: 查出所有成绩都在60分以上的,平均分最高的学生名称 , 并且未删除(is_deleted = 0)
SQL :
分析 : (默认 join 在 where之前 ,这个没法分析判断)
1、where中可以带有 select中未明确标出的字段,表示where查询的时候,join的是所有字段的笛卡尔积
2、如果在having中带有a.is_deleted=0会报错,但是在order by中不会报错 ,说明
order by >select 字段过滤>having
3、在 where中加上 min(b.score)> 60 会报错,说明先where 然后再 group by ,执行聚促函数
相关文章推荐
- Oracle存储过程中执行查询返回的结果集,并使用java代码调用【转】
- 内部查询处理器错误: 查询处理器在执行过程中遇到意外错误
- Hive查询在MapReduce上的执行过程
- MySQL查询执行过程
- 通过存储过程执行通过DBLINK的查询语句失败-单个语句成功--ORA-00604
- 利用sql server2000 查询过程中 写的几个函数和在.NET中的执行
- SQL SERVER 2008:内部查询处理器错误: 查询处理器在执行过程中遇到意外错误
- Impala源代码分析(3)-backend查询执行过程
- mysql select 执行过程查询关键字 explain
- SequoiaDB的查询执行过程
- 关于分页存储过程的优化【让数据库按我们的意思执行查询计划】
- PostgreSQL服务过程中的那些事二:Pg服务进程处理简单查询六:执行器执行
- 查询SQL Server存储过程的执行信息(转)
- SQL SERVER 2008:内部查询处理器错误: 查询处理器在执行过程中遇到意外错误
- 查询SQL Server存储过程的执行信息
- 用存储过程执行数据查询
- mysql执行查询的一般过程
- 小觑数据库(SqlServer)查询语句执行过程
- iBatis开发详解(7)-------------执行非查询语句(CRUD,函数和过程