基于案例SQL优化第八课作业分享

―――――――――――――――――――――作业―――――――――――――――――――――――――――――――

布置人:wabjtam123 

一、说说三大经典表连接分别有什么限制?

1、Nested Loops Join,支持大于,小于,不等,LIKE等连接条件,可以说没有受到任何限制;

2、Hash Join不支持>、<、like、<>等;

3、Merge Sort Join支持>、<,不支持like和<>;

 

二、说说三大经典表连接的各自特性(从表访问次数,表驱动顺序与性能、是否排序这三方面说)

1、Nested Loops Join:

  • 表的访问次数,NL连接中,驱动表被访问0或者1次,被驱动表被访问0次或者N次,N由驱动表返回的结果集的条数来定。
  • 表驱动顺序与性能,NL连接中,表驱动顺序与性能有非常大的关系,应该把返回结果集小的作为驱动表。
  • 表连接是否有排序,通过排序观察统计信息的sorts(memory)和sorts(disk)部分得出,NL连接不会产生排序!

2、Hash Join:

  • 表的访问次数,HASH连接中,驱动表被访问0或者1次,被驱动表也是被访问0次或者1次,绝大部分场景是驱动表和被驱动表被各访问1次);
  • 表驱动顺序与性能,HASH连接中,表驱动顺序与性能有非常大的关系,应该把返回结果集小的作为驱动表,同NL连接。
  • 表连接是否有排序,通过排序观察统计信息的sorts(memory)和sorts(disk)部分得出,HASH连接不会产生排序!

3、Merge Sort Join:

  • 表的访问次数,排序合并连接中,两表都是只被访问0次或者1次,和HASH 连接一样;
  • 表驱动顺序与性能,Merge连接中,表驱动顺序与性能有非常大的关系,应该把返回结果集小的作为驱动表,同NL连接;
  • 表连接是否有排序,通过排序观察统计信息的sorts(memory)和sorts(disk)部分得出,Merge Sort Join会产生排序!

 

三、说说表连接优化有哪些要点

  1. Hash Join连接优化第1式,两表的限制条件有索引(注:针对索引条件返回记录很少的情况)!
  2. Hash Join连接优化的第2斧是,注意驱动表的结果集是否是小的 (在统计信息不准确的时候,经常会出现将大的结果集驱动的情况,需要我们介入判断分析)
  3. HASH连接优化第3斧(确保在PGA完成HASH运算的尺寸);
  4. Merge Sort Join连接优化第1式,两表的限制条件有索引(注:针对索引条件返回记录很少的情况)!
  5. Merge Sort Join连接优化第2式,在连接条件字段上建索引,用以消除排序合并连接的排序动作!
  6. Merge Sort Join连接优化第3式,避免多余列致排序尺寸过大;
  7. Merge Sort Join优化第4式,保证PGA的尺寸要大。
  8. Nested Loops Join连接优化的第1把菜刀是,驱动表的限制条件有索引!
  9. 给Nested Loops Join连接优化的第2把菜刀是,被驱动表的连接条件有索引!
  10. Nested Loops Join连接优化的第3把菜刀是,注意驱动表的结果集是否是小的, (在统计信息不准确的时候,经常会出现将大的结果集驱动的情况,需要我们介入判断分析);
  11. 注意:Hash连接和NL连接只取部分列性能基本不会有什么提升

 

基于案例SQL优化第八课作业分享,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。