none
MSSQL 쿼리 order by 속도 문의드립니다. RRS feed

  • 질문

  • 안녕하세요. 개발자가 쿼리 속도까지 확인하려니 앞길이 막막한 1인입니다.

    예를 들기가 어려워 실 쿼리를 예로 문의드립니다.

    SELECT T.ROWID, UVW_LS140050.SOCIAL_CD,UVW_LS140050.SOCIAL_NM,UVW_LS140050.ORD_SEQ,UVW_LS140050.ORD_NAME,UVW_LS140050.DEAL_ID,UVW_LS140050.DEAL_NM,UVW_LS140050.PIN_NO,UVW_LS140050.OPT_ID,UVW_LS140050.OPT_NM,UVW_LS140050.ORD_MOBILE,UVW_LS140050.ORD_MENT,UVW_LS140050.CUST_CODE,UVW_LS140050.CUST_NAME,UVW_LS140050.REG_DATE,UVW_LS140050.REG_DT,UVW_LS140050.ORD_DATE,UVW_LS140050.USE_CNT,UVW_LS140050.USE_YN,UVW_LS140050.USE_DATE,UVW_LS140050.USE_DT,UVW_LS140050.CC_YN,UVW_LS140050.CC_DATE,UVW_LS140050.RST_YN,UVW_LS140050.RST_DATE,UVW_LS140050.SAL_AMT,UVW_LS140050.PUR_AMT
            FROM UVW_LS140050
           INNER JOIN (
                    SELECT  UVW_LS140050.[SOCIAL_CD],UVW_LS140050.[ORD_SEQ],UVW_LS140050.[PIN_NO],UVW_LS140050.[CUST_NAME], ROW_NUMBER() OVER(ORDER BY UVW_LS140050.SOCIAL_CD ,UVW_LS140050.USE_DATE DESC) AS ROWID 
                    FROM UVW_LS140050 
                     WHERE CUST_NAME = '고객사명'  AND USE_DT >= '2017-11-01'  AND USE_DT <= '2017-11-09' ) AS T 
               ON  T.[SOCIAL_CD] = UVW_LS140050.[SOCIAL_CD] AND T.[ORD_SEQ] = UVW_LS140050.[ORD_SEQ] AND T.[PIN_NO] = UVW_LS140050.[PIN_NO] AND T.[CUST_NAME] = UVW_LS140050.[CUST_NAME]
               AND T.ROWID > 0
               AND T.ROWID < 1000
            ORDER BY T.ROWID

    위 쿼리 시 ORDER BY T.ROWID 이 부분에 따라서 속도 차이가 엄청 납니다. 물론 갯수를 줄이면 빨라지겠지만 1000개 기준으로 잡았을 때 order by 빼면 약 2초, 넣으면 20초 정도가 걸립니다. 경우에 따라서 30초 이상 걸리면 웹에서 시간 초과로 조회를 할 수 없는 경우까지 발생합니다.

    혹, 더 필요한 정보가 있으면 말씀 부탁드립니다.

    2017년 11월 9일 목요일 오전 12:12