您当前的位置: AG亚游集团 > 数据库教程 > MySQL教程 > 从join on和where执行顺序认识T-SQL查询处理执行顺序

从join on和where执行顺序认识T-SQL查询处理执行顺序

作者:xiaoxiao 来源:未知 发布时间: 2014-07-30 09:45 点击: 次
SQL语句中join连表时on和where后都可以跟条件,那么对查询结果集,执行顺序,效率是如何呢? 通过查询资料发现: 区别: on是对中间结果进行筛选,where是对最终结果筛

AG亚游集团,  由于中国已经成为主要的机顶盒生产地之一,因此,在此次CCBN展会上,国内机顶盒生产企业展示了从具备最基本功能的低端机顶盒到将有线和IP结合在一起的双模机顶盒以及高端带PVR(个人录像)功能的机顶盒。显而易见的是,厂商的侧重有所不同。

  罗斯石油公司公司总裁谢钦表示,俄方始终欢迎拥有高科技的日本伙伴参与公司的项目开发。双方签订的能源开采和勘探项目合同不仅在俄罗斯境内,现在扩展到了亚太地区。罗斯石油公司是俄罗斯的能源巨头,同时也是向中国出口俄罗斯石油的主要供货商。谢钦是普京的密友和亲信,曾长期担任普京办公室主任。最有前景的十大行业  这是我们设计到的CNGI七个节点的建设示意图,这是网通的七个结点,这外面又是中国科学院的七个结点,再下面是驻地网的建设,主要是连接全国的科研机构,同时形成CNGI在科研方面的网络,所以有非常重要的价值和意义。我们要现在IPv6/v4转换、网络测量与检控、IPv6根服务器、安全方面的研究等等。包括网格计算、数据网格与中间件,源数据等等方面的研究。下面介绍一下为了更好地配合科研信息化的发展,为了给科学家提供更好的网络科研环境,中国科学院在网络方面联合国外的科研机构所做的网络方面的联合科研项目。

从join on和where执行顺序认识T-SQL查询处理执行顺序

  SQL语句中join连表时on和where后都可以跟条件,那么对查询结果集,执行顺序,效率是如何呢?

  通过查询资料发现:

  区别:

  
on是对中间结果进行筛选,where是对最终结果筛眩

  执行顺序:

  
先进行on的过滤, 而后才进行join。

  效率:

  
如果是inner join, 放on和放where产生的结果一样, 但没说哪个效率速度更高? 如果有outer join (left or right), 就有区别了, 因为on生效在先, 已经提前过滤了一部分数据, 而where生效在后.

  最后来了解下T-SQL对查询逻辑处理。

  T-SQL逻辑查询的各个阶段:

  (5)SELECT DISTINCT TOP(<top_specification>) <select_list>                     

  (1)FROM <left_table> <join_type> JOIN <right_table> ON <on_predicate>

  (2)WHERE <where_predicate>

  (3)GROUP BY <group_by_specification>

  (4)HAVING <having_predicate>

  (6)ORDER BY <order_by_list>

  T-SQL在查询各个阶级分别干了什么:

  (1)FROM 阶段

     FROM阶段标识出查询的来源表,并处理表运算符。在涉及到联接运算的查询中(各种join),主要有以下几个步骤:

  a.求笛卡尔积。不论是什么类型的联接运算,首先都是执行交叉连接(cross join),求笛卡儿积,生成虚拟表VT1-J1。

       b.ON筛选器。这个阶段对上个步骤生成的VT1-J1进行筛选,根据ON子句中出现的谓词进行筛选,让谓词取值为true的行通过了考验,插入到VT1-J2。

       c.添加外部行。如果指定了outer join,还需要将VT1-J2中没有找到匹配的行,作为外部行添加到VT1-J2中,生成VT1-J3。

     经过以上步骤,FROM阶段就完成了。概括地讲,FROM阶段就是进行预处理的,根据提供的运算符对语句中提到的各个表进行处理(除了join,还有apply,pivot,unpivot)

  (2)WHERE阶段

      WHERE阶段是根据<where_predicate>中条件对VT1中的行进行筛选,让条件成立的行才会插入到VT2中。

  (3)GROUP BY阶段

        GROUP阶段按照指定的列名列表,将VT2中的行进行分组,生成VT3。最后每个分组只有一行。

  (4)HAVING阶段

        该阶段根据HAVING子句中出现的谓词对VT3的分组进行筛选,并将符合条件的组插入到VT4中。

  (5)SELECT阶段

  这个阶段是投影的过程,处理SELECT子句提到的元素,产生VT5。这个步骤一般按下列顺序进行

         a.计算SELECT列表中的表达式,生成VT5-1。

         b.若有DISTINCT,则删除VT5-1中的重复行,生成VT5-2

         c.若有TOP,则根据ORDER BY子句定义的逻辑顺序,从VT5-2中选择签名指定数量或者百分比的行,生成VT5-3

  (6)ORDER BY阶段

  根据ORDER BY子句中指定的列明列表,对VT5-3中的行,进行排序,生成游标VC6.
分享到:
本文"从join on和where执行顺序认识T-SQL查询处理执行顺序"由远航站长收集整理而来,仅供大家学习与参考使用。更多AG亚游集团尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
AG亚游集团关于本站 - 联系我们 - 广告合作 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(AG亚游集团). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类AG亚游集团.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4
大货车司机疑因斗气路怒发作 立交桥上撞越野车 18赛季中超嘉年华火热来袭:助力盛夏 点燃城市激情 跟陌陌和探探创始人聊天:得到陌生人社交通关密语 名宿揭奥巴梅扬低迷原因:被阿森纳迷茫气氛影响 台湾山西代表团3月9日9:00开放团组会议 黑色系期货继续下挫 焦炭、铁矿跌逾3% 焦煤跌逾2% 两岸军力悬殊台军明知打不赢 索性改“战胜”定义 天降十万现钞遭路人“哄抢” 失主寻回7万(视频) “月宫365实验”今日出舱 再创世界纪录 2018城围联隆重开幕 32队齐聚围棋NBA火爆开启 P2P爆雷并非商业模式出了问题:前期野蛮生长的后果 2018上半年国内智能手机回顾:群雄割据 寡头定型
英国男子为逃行李超重罚款 穿10层衣服坐飞机 液化天然气亚洲价格下跌 因中国需求减少 元宵节东北新疆“雪打灯” 南方多地雨朦胧 亚冠第三轮最佳阵容出炉:高拉特携奥斯卡入选 复盘建业胜泰达:泰达掌控中场 得势不得分典型教材 联想欲在印度生产智能可穿戴配件 并提高当地市占率 亚汇中国:中兴事件迎重大转机 本周还有两大重磅事件 四川凉山州常委刘俊文任广东佛山副市长(图/简历) 川航备降飞机去年曾进行大范围检修 含所有窗玻璃 美欧贸易战不打了?为啥这些美国红腰豆厂主还忧心 特朗普称美欧叫停贸易战 还要向“零”关税迈进 李明:国安已向足协交足额调解费 巴坎布费用保密
“睡神”开球前38分钟起床10秒洗澡 印度赛交67杆 张德江用11个数字概说十二届人大五年工作 男子就餐被服务员砍伤 双方系同村曾有矛盾 短视频行业遇危机 互联网专家:是算法目标出问题 上港抢攻策略好过以往 守住榜首进入休赛期 苏炳添大阪赛只跑接力 谢震业200米试水挑战19秒 国产手机“翻身仗”:从中国制造到中国品牌 XCOQ爱客汇评:美元强势新高 黄金暴跌破位千三 母亲网筹25万救女却有多套房 平台:实地督其退款 在中国发横财七大方法 养20头牛一年赚多少钱 过年摆地摊赚10万 女人没经验开什么店好 AG亚游集团