爽的翻 2018-09-18 02:59 采纳率: 66.7%
浏览 496
已采纳

sql 数据优化 pl/sql oracle

各位大佬下面语句有办法进行优化 让它的查询变得更快嘛

 Select a.*
  From (select /*+first_rows*/
         wi.iid as 顺序号,
         w.wname as 案件类型,
         i.name as 名称,
         x.联系人 as 联系人,
         wi.accepted_time as 接收时间,
         wi.submit_time as 提交时间,

         (Select user_name From st_user Where userid = wi.senduserid) as 前一用户,

         wi.wiid,
         wi.step as 所在岗位,
         x.业务类型id as BusinessId

          from ST_WORK_ITEM_HIST wi,
               xt_instance x,
               st_instance i,
               st_workflow w

         where wi.iid = x.iid
           and x.iid = i.iid
           and i.wid = w.wid
           and wi.userid = '52AD6F18BD6C45809A83D3D1EA4CC1F21111'
           and x.业务类型id in

               (select id from sys_business_type b where b.type = 3)
         order by wi.accepted_time desc) a

 Where rownum <= 10
  • 写回答

4条回答 默认 最新

  • 啊佛啊门 2018-09-18 03:09
    关注

    select /*+first_rows*/
    wi.iid as 顺序号,
    w.wname as 案件类型,
    i.name as 名称,
    x.联系人 as 联系人,
    wi.accepted_time as 接收时间,
    wi.submit_time as 提交时间,
    u.user_name as 前一用户,
    wi.wiid,
    wi.step as 所在岗位,
    x.业务类型id as BusinessId
    from ST_WORK_ITEM_HIST wi,
    xt_instance x,
    st_instance i,
    st_workflow w
    left join st_user u on u.userid=wi.senduserid
    where wi.iid = x.iid
    and x.iid = i.iid
    and i.wid = w.wid
    and wi.userid = '52AD6F18BD6C45809A83D3D1EA4CC1F21111'
    and exists (select 1 from sys_business_type b where b.type = 3 and b.id=x.业务类型id)
    order by wi.accepted_time desc

    推荐建立索引:
    ST_WORK_ITEM_HIST.iid
    xt_instance.iid
    st_instance.iid
    st_instance.wid
    st_workflow.wid

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 大耳朵狄元芳 2018-09-18 03:09
    关注

    不知道数据量是很难优化的,首先你看看表的数据量,把数据量最大的表写到最后面,然后条件就是把能过滤最多的数据条件放在最后面,这样就能加快不少速度

    评论
  • 回到未来望过去 2018-09-19 11:26
    关注

    请发出来执行计划,根据计划进行分析后才能得出合理的性能优化方案

    评论
  • 嗷呜的善泽融 2022-02-16 15:26
    关注

    针对CBO模式,感觉从sql代码来看,基本没有优化的空间,不过可以看看这段:

    (select id from sys_business_type b where b.type = 3)
    
    

    是否需要给这个id去一下重

    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 Qt 不小心删除了自带的类,该怎么办
  • ¥15 我需要在PC端 开两个抖店工作台客户端.(语言-java)
  • ¥15 有没有哪位厉害的人可以用C#可视化呀
  • ¥15 可以帮我看看代码哪里错了吗
  • ¥15 设计一个成绩管理系统
  • ¥15 PCL注册的选点等函数如何取消注册
  • ¥15 问一下各位,为什么我用蓝牙直接发送模拟输入的数据,接收端显示乱码呢,米思齐软件上usb串口显示正常的字符串呢?
  • ¥15 Python爬虫程序
  • ¥15 crypto 这种的应该怎么找flag?
  • ¥15 代码已写好,求帮我指出错误,有偿!