조금 수정 포인트가 있을까요? (자바, MYSQL) 0 1 467

by 아니8083 [2019.07.29 16:59:46]


아래처럼 개발을 했는데, 제 머릿속에서 나올 수 있는 최선입니다...

그런데 아무리 봐도 성능이나 구문 등이 마음에 들지 않아서

혹시 더 간략하게 또는 간결하게 할 수 있는 방법이 있을까요?

 

<mapper namespace="sw.production.TwistYarnOrderMapper">

    <select id="selectList" resultType="sw.production.TwistYarnOrder" parameterType="atech.common.Paging">

        SELECT SQL_CALC_FOUND_ROWS * FROM VIEW_TWIST_ORD_APPROVAL 

        <where>

            <if test="sear != null and sear != ''">

                AND ( 

                    LOT_NO LIKE CONCAT('%',#{sear},'%') OR 

                    TWIST_CD LIKE CONCAT('%',#{sear},'%') OR

                    COLOR LIKE CONCAT('%',#{sear},'%') OR 

                    COLOR_NM LIKE CONCAT('%',#{sear},'%') OR 

                    CARD_WORK_MAC LIKE CONCAT('%',#{sear},'%') OR

                    WORK_MAC_NM LIKE CONCAT('%',#{sear},'%') OR

                    BEON_CNT LIKE CONCAT('%',#{sear},'%') OR

                    YORI LIKE CONCAT('%',#{sear},'%') OR

                    WRITER LIKE CONCAT('%',#{sear},'%') OR 

                    WRITE_DT LIKE CONCAT('%',#{sear},'%')

                )

            </if>

            <if test="sState != null and sState != ''">

                AND STATUS = #{sState}

            </if>

            <if test="sType != null and sType != ''">

                AND TYPE = #{sType}

            </if>

        </where>

        ORDER BY 

        <choose>

            <when test="s_order_field != null and s_order_field != ''">

                ${s_order_field} ${s_order_method}

            </when>

            <otherwise>

                WRITE_DT desc

            </otherwise>

        </choose>

        LIMIT #{offSet}, #{recordsPerPage}

by 농부지기 [2019.08.02 16:23:59]

OR 조건이 너무 많아서 느릴 수 밖에 없겠네요. ^^

만약, 모델링 부터 다시 한다면
컬럼을 봐야 겠지만 OR절을 최소화 할 수 있도록
[LOT_NO LIKE, TWIST_CD, COLOR, COLOR_NM, ....WRITE_DT]
이 여러게 컬럼을 하나로 묶어 주는 컬럼을 만드세요.
그런후 INDEX 를 잡아 검색하면 좋을 거 같네요.

만약, 자료가 계속 쌓인다면 .. ?? ㅋㅋㅋ ... SQL문장으로 해결이 아닌
본적인 대책을 강구하시는게 좋을거 같네요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입