首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql查询语句执行顺序

mysql查询语句执行顺序

作者头像
dys
发布2018-04-02 16:57:00
5.1K0
发布2018-04-02 16:57:00
举报
文章被收录于专栏:性能与架构性能与架构

Mysql SQL查询处理的顺序: (8)select (9)distinct <select_list> (1)from <left_table> (3)<join_type> join <right_table> (2)on <join_condition> (4)where <where_condition> (5)group by <group by list> (6)with {cube|rollup} (7)having <having_condition> (10)order by <order_by_list> (11)limit <limit_number> 第一个被处理的子句总是from,最后执行的是limit,每个操作都会产生一个虚拟表,做为下一步的输入,这个虚拟表对用户是透明的,只有最后一个虚拟表才会返回给用户 (1)from 对<left_table>和<right_table>执行笛卡尔积,产生虚拟表VT1 (2)on 对VT1应用on条件过滤,把符合<join_condition>的记录放入VT2 (3)join 如果指定了join类型,如 left join、right join,把相应的外部行添加到VT2,形成VT3 如果from中有两个以上的表,使用VT3和下一个表再执行一遍前3步,直到处理完所有的表 (4)where 对VT3应用where过滤,把符合<where_condition>的记录放入VT4 (5)group by 根据<group by list>对VT4进行分组操作,产生VT5 (6)cube|rollup 对表VT5进行CUBE或ROLLUP操作,产生表VT6 (7)having 对VT6应用having过滤,符合<having_condition>的记录放入VT7 (8)select 从VT9中挑选出目标列,放入VT8 (9)distinct 对VT8进行去重操作,产生VT9 (10)order by 根据<order_by_list>对VT9进行排序,产生VT10 (11)limit 取出指定行的记录,产生VT11,返回给用户

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档