• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

SQL执行步骤的具体分析

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

SQL执行步骤的具体分析

先来看执行语句的顺序

(8)select (9)distinct A (1)from Ta (3)join Tb 
(2)on XXX (4)where XXX (5)group by XXX (6)with 
{cube|roll up} (7)having XXX (10)order by XXX (11)limit XXX 

 接着我们看一下具体分析查询处理的各个阶段:

  1. FROM  对from子句中的左表和右表执行笛卡尔集,产生虚拟表VT1
  2. ON  对虚拟表VT1进行on筛选,只有那些符合join condition的行才被插入虚拟表VT2中
  3. JOIN  如果指定了outer join,那么保留表中未匹配的行作为外部行添加到虚拟表VT2中,产生虚拟表VT3。如果from子句包含两个以上的表,则对上一个连接生成的结果表中VT3和下一个表重复执行步骤1~步骤3,直到处理完所有的表为止。
  4. WHERE  对虚拟表VT3进行where过滤条件,只有符合条件的才被插入到虚拟表VT4中。
  5. GROUP BY  根据group by子句中的列,对VT4中的记录进行分组操作,产生VT5.
  6. CUBE|ROLL UP  对表VT5进行CUBE或者ROLLUP操作,产生表VT6.
  7. HAVING  对虚拟表VT6应用having过滤器,只有符合条件的记录才会被插入到虚拟表VT7中
  8. SELECT  第二次执行select操作,选择指定的列,插入到虚拟表VT8中。
  9. DISTINCT  去除重复数据,产生虚拟表VT9。
  10. ORDER BY  将虚拟表VT9中的记录按照指定的要求进行排序操作,产生虚拟表VT10
  11. LIMIT  取出指定行的记录,产生虚拟表VT11,并返回给查询用户

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap