普通网友 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 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码