问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请大神帮忙优化此oracle的sql

发布网友 发布时间:2022-12-16 15:55

我来回答

1个回答

热心网友 时间:2024-10-21 09:18

最好不要用not exists。

而且我对你们表的搭建表示怀疑,一些字段可以牺牲下存储空间,使信息更充足,例如oa_approve表是否可以含有oa_affix_seal的一些信息,查询时就不用关联这2个表了。

而且你这个sql涉及6个表,不知道每个表的结构(是否有索引,数据行数),所以单纯从sql语法上,建议用left join。下面是我假设的一段sql,你要注意的是结构而不是调试了就直接用:

select a.approve_id    as approveId,
       a.approve_title as approveTitle,
       a.created_date  as createdDateString,
       a.updated_date  as updatedDateString
  from oa_approve a
  left join oa_affix_seal t1
    on a.approve_id = t.approve_id
   and t.is_valid <> 'Y'
  left join oa_approve_param t2
    on t2.approve_id = a.approve_id
   and t.param_key = 'sealType'
   and t2.param_value = 'E'
   and t2.is_valid = 'Y'
  left join oa_approve_task ta
    on ta.approve_id = a.approve_id
   and ta.is_valid = 'Y'
   and ta.task_type_code = '1'
   and ta.task_status_code = 'A'
   AND ta.templ_id = n1.templ_id
  left join oa_flow_templ_node n1
    on ta.templ_node_code = n1.templ_node_code
   and n1.is_valid = 'Y'
 where a.is_valid = 'Y'
      /*and not exists (select 1
       from oa_affix_seal t1
      where t.approve_id = a.approve_id
        and t.is_valid = 'Y')*/
   and t1.approve_id is not null
      /* and exists
      (select 1
               from oa_approve_param t2
              where t.approve_id = a.approve_id
                and t.param_key = 'sealType'
                and t.param_value = 'E'
                and t.is_valid = 'Y')*/
   and t2.approve_id is not null
      /*and ((a.approve_status_code = 'E' and a.approve_result = 'Y') or exists
      (select 1
         from oa_approve_task ta, oa_flow_templ_node n1
        where ta.is_valid = 'Y'
          and ta.task_type_code = '1'
          anD ta.task_status_code = 'A'
          AND ta.templ_id = n1.templ_id
          and ta.templ_node_code = n1.templ_node_code
          and n1.is_valid = 'Y'
          and ta.approve_id = a.approve_id
          and n1.templ_node_step >
              (select n2.templ_node_step
                 from oa_flow_templ_param p, oa_flow_templ_node n2
                where p.is_valid = 'Y'
                  and n2.is_valid = 'Y'
                  and p.param_key = 'SEND_IESS_CONTROLLER'
                  and p.param_value = n2.templ_node_code
                  and n2.templ_id = ta.templ_id
                  and n2.templ_ver = ta.templ_ver
                  and rownum = 1)))*/
   and ((a.approve_status_code = 'E' and a.approve_result = 'Y') or
       (ta.approve_id is not null and n1.templ_node_code is not null and
       n1.templ_node_step >
       (select n2.templ_node_step
            from oa_flow_templ_param p, oa_flow_templ_node n2
           where p.is_valid = 'Y'
             and n2.is_valid = 'Y'
             and p.param_key = 'SEND_IESS_CONTROLLER'
             and p.param_value = n2.templ_node_code
             and n2.templ_id = ta.templ_id
             and n2.templ_ver = ta.templ_ver
             and rownum = 1)))
 order by a.updated_date desc;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
孩子依赖性太强,妈妈怎么办?目录 孩子对妈妈依赖性太强怎么办 介绍权利的游戏里龙之母全名是什么? 澳洲血橙胶原蛋白是玻璃瓶的吗? 梦见母亲侄子妹妹舅妈电话破屋的预兆 梦见坐别人的车什么意思 有多少人去拜过“龙母”,又有几人知道“龙母”是真的存在过 龙母庙地址在哪里? 龙母像地址在哪里? 龙姥姥是龙母娘娘吗 怎么用文字表示第一跟头发 感叹自己有白头发的朋友圈 发烧,心跳加快,吃了阿莫西林后头不感到痛了 发烧心跳加快怎么办? 可以用电脑解破解微信密码吗安卓 如何判断夏威夷果成熟 夏威夷果怎么看熟了没 白草莓如何判断新鲜 白草莓怎么看新不新鲜 赵崼的“崼”拼音是什么?怎么念? vertical merger是什么意思 在差异中走向融合.的翻译是:什么意思 show details的意思是什么? 华为手机总是提示免费领内存 MCC的意思 ,及电气术语 mcc控制柜是什么 远看成岭侧成峰,远近高低各不同是谁的诗,哪个朝代的? 西林寺的概述 吧嗒是什么词 热熔胶能代替绝缘胶带么 热熔胶在水下带什么电荷 如何健康的节食减肥 胡家太爷谁最厉害 堂口上胡天青,胡天海大仙有什么神通 胡令伦是哪个朝代的人 kk谷歌助手安装闪退 mumu模拟器没有kk谷歌助手 使命召唤破解版在哪里下载 月字诗句 客厅放几盆绿植最好? 陶潜的《挽歌》原文是什么? 唱得嗓子都哑了的结构类型 什么是哑原子? 请告诉我一些著名的卡通形象的猫 如何用burpsuite抓https包 家里应放什么植物美观 神木海尔空调维修电话 格力空调安装服务电话24小时 abook注册验证码错误 听朋友说玩开心淘金乐能用金豆换金首饰是真的么?有人换过吗? 体彩顶刮刮哪种票中奖最多最好玩? 请问今天91淘金乐透竞猜要选几号啊???