SSM框架select语句查询条件in数值超过1000条的处理方式之一

创建临时表

<select id="xxx" resultType="xxx">
    SELECT DISTINCT
        A.ORG_ID,A.PARENT_ORG_ID,A.AREA_ID,A.ORG_NAME,A.ORG_TYPE,A.STATE,A.STATE_DATE,
        ORG_CODE,A.LEADER,A.SP_ID,C.USER_ID,C.STAFF_NAME LEADER_STAFF_NAME
    FROM BFM_ORG A LEFT JOIN BFM_STAFF C ON A.LEADER = C.STAFF_ID
    WHERE A.ORG_ID IN
    <foreach item="item" index="index" collection="orgIdList"
    open="(" separator=" union all " close=")">
        select #{item} from dual
    </foreach>
</select>

orgIdList后台传来的数据,超过1000条,使用union all拼接临时表可以解决in条件超出1000的问题。

当in条件超出1000是会严重拖累系统性能,影响查询速度。

将得到的数据展示出来,可通过分页等方式逐步显示数据。

猜你喜欢

转载自blog.csdn.net/FV8023/article/details/87872659