zoukankan      html  css  js  c++  java
  • SQL优化——union与union all 、left join 和 inner join 及 内连接

      最近在优化一个功能,原写法是视图中套用视图,视图中又有视图,且查询了多张表用不同的数据源,用了union也用了union all,还有left join 和 inner join 及内连接的使用。

      现象: 打开列表页面DB的使用率就高达30%

      优化点:

      1、在业务允许的情况下用union all 代替union

         union all 和 union 都是将两个结果集合并,但是效率有所不同:

         a.对重复结果的处理:union 会筛选去掉结果集中重复数据,而union all 允许有重复数据;

         b.对排序的处理:union会按照字段进行排序,而union all 只是汇集结果后返回。

        所以union all 的效率会高于union,在业务允许的情况使用union all。

      2、left join 和 inner join的优化

         a.left join是左外连接,左边主表的内容全部显示出来,关联表满足条件就才显示;

         b.inner join没有主附表的区分,两个表满足关联条件的都显示出来(inner join简写就是join);

         优化点:left join是左外连接用在主表数据较少,从表数据量较大的时候;如果业务逻辑要求主表数据量比较大可以考虑inner join ,因为inner join返回结果的时候会自动选取数据量小的为基础表(待验证)。

      3、全连接效率最大,占用资源最多,尽量优化

      

  • 相关阅读:
    FindBugs详解
    Java杂项
    Ubuntu 16.04安装DB2 Express C v11.1
    h5搜索功能
    与安卓交互的上传图片 与 上传语音、视频
    获取后台轮播图图片,让其自动播放
    点赞和关注功能
    split、replace、indexof、substr 用法 (获取后台富文本框内容,截取图片)
    ttyu平台进页面获取阅读量
    图片放大预览功能
  • 原文地址:https://www.cnblogs.com/crazycomputers/p/12840909.html
Copyright © 2011-2022 走看看