쿼리가 너무 느려서 고쳐달라고 요청이 왓는데.... 0 5 1,621

by 김영훈 [2014.10.01 18:13:07]


20141001_180938.png (22,533Bytes)

이미지는 첨부했습니다.

플랜을 떠봤는데 좀 이해도 안가기도하고 ;; 쿼리가 너무 느리더라구요;;

도와주세요;;;;

관련 쿼리

explain
SELECT
       A.*
        FROM
    tbl_qrequest A
    LEFT OUTER JOIN tbl_quotation B on A.qreq_idx = B.qreq_idx and B.com_del_yn = 'N' and B.mem_del_yn = 'N'
    LEFT OUTER JOIN tbl_member C on A.member_idx = C.member_idx
    JOIN tbl_company D on A.company_idx = D.company_idx
        WHERE A.com_del_yn = 'N' AND A.mem_del_yn = 'N'
 
   플랜은 이미지로 첨부했습니다.

by DarkBee [2014.10.01 18:21:09]
눈으로 봤을땐 특별히 데이터 Row수를 줄여주는 조건 자체가 보이질 않네요.

Query 속도를 위해서 업무적으로 조건 추가가 필요해보입니다.

 


by 비주류 [2014.10.01 23:36:54]

A쪽 컬럼만 가져오는거면 tbl_quotation tbl_member 과의 outer join 을 제거해보세요.

com_del_yn = 'N' AND mem_del_yn = 'N' 관련해선 인덱스는 없나요? 알아서 full table scan 한 것 같긴하지만 force index 같은 힌트로 테스트해보셔도 좋을 것 같습니다. (전체 대비 선택되는 건수를 알면 좋겠네요.)

 

 


by 김영훈 [2014.10.02 09:38:34]

index를 한번 넣어보겠습니다.


by 김영훈 [2014.10.02 09:57:48]

index 태우니깐 됬어요 님 짱~~~~~~~ 감사합니다.


by 롤초보 [2014.10.02 10:02:29]

위 쿼리는 A Table 의 데이터만 가져오는데 Outer Join 은 왜 하신건지요?Exists 조건만으로 있는 Data 가 존재하는 항목에 대해서만 체크하시는게 좋지 않을까 합니다.

또한 제 생각인데 DATA VALUE 가 Y, N 만 있는 컬럼에 대해서 INDEX 는 별로 비효율적일것 같습니다.

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