普通网友 2017-02-07 09:27 采纳率: 0%
浏览 1809

oracle循环查询效率问题

我现在写了一个代码 代码中for循环,循环中有个查询语句,如果循环次数多会很慢;给大神详细解释下:

 select STAFF_ID from APP_USER_2_ROLE where ROLE_ID='4' and AREA_CODE='09'

这个查询的结果是多条记录,也是for循环的次数;

循环重要执行的sql为:

 SELECT *
        FROM (SELECT B.*, ROWNUM AS ROW_INDEX
        FROM ( SELECT
        A.CHNL_CODE,A.CHNL_NAME,A.CHNL_KIND_ID,C.KIND_VALUE,A.CHNL_ADDR_DETAIL_TOTAL,
        B.AREA_CODE,A.PROVINCE_CODE,A.CITY_CODE
        FROM TF_CHL_CHANNEL A ,
        TF_CHL_MANAGER B , T_CHL_KIND C
        <where>
            A.CHNL_ID=B.CHNL_ID AND A.CHNL_KIND_ID = C.KIND_ID
            <if test="manaStaffId != null">
                AND B.MANA_STAFF_ID = '${manaStaffId}'
            </if>
            <if test="areaCode != null">
                AND B.AREA_CODE = '${areaCode}'
            </if>
            <if test="chnlKindId != null">
                and A.CHNL_KIND_ID in (${chnlKindId})
            </if>
            AND A.STATE IN ('10','11','12')
        </where>
        ) B ) where row_index > ${minRowNum} and row_index &lt;= ${maxRowNum}

求大神指教 oracle有没有办法把这两个sql弄到一起变成一个oracle内部循环,求大神帮忙写下 感谢

  • 写回答

2条回答 默认 最新

  • roc_tootwo 2017-02-07 14:07
    关注

    方法一:使用存储过程。
    方法二:不循环,换个思路,直接将两个sql连接,直接查出所有结果

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料