무스비
71
2022-06-23 17:55:30
2
116

쿼리 질문 드립니다.


SELECT B.PLANT_CD,

        B.PLANT_CD as SYSSUBCD,

        I.ITEM_CD,

        I.ITEM_NAME,

        (CASE WHEN (L.LOCK1_FLAG IS NULL OR L.LOCK1_FLAG = 'N') THEN '0' ELSE '1' END) LOCK1_FLAG,

        (CASE WHEN (L.LOCK2_FLAG IS NULL OR L.LOCK2_FLAG = 'N') THEN '0' ELSE '1' END) LOCK2_FLAG,

        (CASE WHEN L.ITEM_CD IS NULL THEN '0' ELSE '1' END) CHK,

        DATE_FORMAT(L.ISRT_DT, '%Y%m%d') ISRT_DT

        FROM

SELECT B.PLANT_CD,

        B.PLANT_CD as SYSSUBCD,

        I.ITEM_CD,

        I.ITEM_NAME,

        (CASE WHEN (L.LOCK1_FLAG IS NULL OR L.LOCK1_FLAG = 'N') THEN '0' ELSE '1' END) LOCK1_FLAG,

        (CASE WHEN (L.LOCK2_FLAG IS NULL OR L.LOCK2_FLAG = 'N') THEN '0' ELSE '1' END) LOCK2_FLAG,

        (CASE WHEN L.ITEM_CD IS NULL THEN '0' ELSE '1' END) CHK,

        DATE_FORMAT(L.ISRT_DT, '%Y%m%d') ISRT_DT

        FROM TB_ERP_BITEM_MAST I,

        TB_ERP_BBASIC_INF B

        LEFT OUTER JOIN

        TB_ERP_BBOM_LOCK L ON B.PLANT_CD = L.PLANT_CD AND B.ITEM_CD = L.ITEM_CD

        WHERE B.ITEM_CD = I.ITEM_CD

        AND B.ITEM_ACCNT IN (1, 2, 3)

        AND B.PLANT_CD = '00'

        AND EXISTS(SELECT 1 FROM TB_ERP_BDEV_BOM WHERE PAR_ITEM_CD = B.ITEM_CD)

        AND I.ITEM_NAME LIKE CONCAT(IFNULL('court gra', '') , '%')

        ORDER BY I.ITEM_CD;


위의 쿼리를 디비 툴로 사용 시 1분20초가 걸려 돌아가는데 웹서버상에서 돌리면 안돌아가네요.

쿼리성능상 EXISTS 조건때문에 오래걸리는데 어떤식으로 쿼리를 수정해야할까요?

0
  • 답변 2

  • C#린이
    3k
    2022-06-23 18:24:40

    쿼리 복붙을 잘못하신걸까요?

    하기 단락이 2번 나오네요.


    SELECT B.PLANT_CD,


            B.PLANT_CD as SYSSUBCD,


            I.ITEM_CD,


            I.ITEM_NAME,


            (CASE WHEN (L.LOCK1_FLAG IS NULL OR L.LOCK1_FLAG = 'N') THEN '0' ELSE '1' END) LOCK1_FLAG,


            (CASE WHEN (L.LOCK2_FLAG IS NULL OR L.LOCK2_FLAG = 'N') THEN '0' ELSE '1' END) LOCK2_FLAG,


            (CASE WHEN L.ITEM_CD IS NULL THEN '0' ELSE '1' END) CHK,


            DATE_FORMAT(L.ISRT_DT, '%Y%m%d') ISRT_DT


            FROM

  • C#린이
    3k
    2022-06-23 18:30:37

    EXISTS 조건때문에 오래 걸린다면


    1. WHERE 절에 빠진 조건이 더 있는지

    2. 인라인뷰 내에 TB_ERP_BBASIC_INF 테이블과 엮어서 범위를 줄일지

    결정하셔야겠네요.

  • 로그인을 하시면 답변을 등록할 수 있습니다.