当前位置 > 主页 > 万和大讲堂 >


南京Oracle认证培训 Oracle表三种连接方式

2015-11-05 10:10

  在查看sql执行计划时,我们会发现表的连接方式有多种,本文对表的连接方式进行介绍以便更好看懂执行计划和理解sql执行原理。南京Oracle认证培训

 

  一、连接方式:

 

  嵌套循环(Nested Loops (NL))

 

  (散列)哈希连接(Hash Join (HJ))

 

  (归并)排序合并连接(Sort Merge Join (SMJ) )

 

  二、连接说明:

 

  1.Oracle一次只能连接两个表。不管查询中有多少个表,Oracle在连接中一次仅能操作两张表。南京Oracle认证培训

 

  2.当执行多个表的连接时,优化器从一个表开始,将它与另一个表连接;然后将中间结果与下一个表连接,以此类推,直到处理完所有表为止。南京Oracle培训

 

  三、表连接详解:

 

  1. NESTED LOOP

 

  对于被连接的数据子集较小的情况,nested loop连接是个较好的选择。nested loop就是扫描一个表,每读到一条记录,就根据索引去另一个表里面查找,没有索引一般就不会是 nested loops.一般在nested loop中, 驱动表满足条件结果集不大,被驱动表的连接字段要有索引,这样就走nstedloop.如果驱动表返回记录太多,就不适合nested loops了。如果连接字段没有索引,则适合走hash join,因为不需要索引。南京Oracle认证培训

 

  可用ordered提示来改变CBO默认的驱动表,可用USE_NL(table_name1 table_name2)提示来强制使用nested loop.

 

  要点如下:

 

  1)对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择

 

  2)使用USE_NL(table_name1 table_name2)可是强制CBO 执行嵌套循环连接

 

  3)Nested loop一般用在连接的表中有索引,并且索引选择性较好的时候

 

  4)OIN的顺序很重要,驱动表的记录集一定要小,返回结果集的响应时间是最快的。

 

  5)Nested loops 工作方式是从一张表中读取数据,访问另一张表(通常是索引)来做匹配,nested loops适用的场合是当一个关联表比较小的时候,效率会更高。南京Oracle认证培训


最近开班 more>
  • 全栈开发
  • 软件测试
  • Java大数据开发工程师
  • Web前端开发
  • 开发课程基础班第三期
  • 开发课程基础班第二期
  • 开发课程基础班第一期
  • Java Web UI Python
  • CISP
  • HCIE-Cloud lab
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • OCP 19C
  • RHCA-OpenStack
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • vip班
  • 双休班
  • 双休班
  • 脱产班
  • 脱产班
  • 脱产班
  • 双休班
  • 双休班
  • 双休班
  • 业余班
  • 业余班
  • 6月28日
  • 6月5日
  • 6月26日
  • 6月27日
  • 6月19日
  • 6月12日
  • 6月5日
  • 随时开课
  • 6月10日
  • 6月4日
  • 6月4日
  • 6月12日
  • 6月26日
  • 6月10日
  • 6月10日
  • 6月4日
  • 7月8日
  • 6月28日
    • 姓 名 :
    • 电 话 :
    • 课 程 :

技术交流群

  • Java大数据交流群560819979加入
  • Python技术交流群595083299加入
  • Oracle技术交流群595119011加入
  • Web前端技术交流群604697610加入
  • Huawei技术交流群482919361加入
  • Redhat技术交流群587875348加入
  • UI设计技术交流群511649801加入
  • Cisco技术交流群596886705加入
  • IT运维技术交流群605888381加入