재 주문 횟수 조회 쿼리

재 주문 횟수 조회 쿼리

QA

재 주문 횟수 조회 쿼리

본문

안녕하세요.

 

g5_shop_order 테이블에서 재주문 횟수를 구하는 쿼리를 생성하고 싶습니다.

mb_id가 있으면 mb_id를 기준으로 재 주문횟수를 구하고, mb_id가 없는(비회원) 주문은 od_hp를 기준으로 구하고 싶습니다.

 

아래 처럼 쿼리를 작성했는데, 속도가 느려서 조회가 안되는 상황입니다.ㅠㅠ

 

 

SELECT od_id, mb_id, od_time, ( SELECT COUNT(*) + 1 FROM g5_shop_order o2 WHERE ( (o.mb_id != '' AND o2.mb_id = o.mb_id) OR (o.mb_id ='' AND o2.od_hp = o.od_hp) ) AND o2.od_time <= o.od_time AND o2.od_id < o.od_id ) AS record_count FROM g5_shop_order o;

이 질문에 댓글 쓰기 :

답변 3

서브쿼리대신 JOIN을 사용할 수 있으며, 또한 필요한 필드만 선택하도록 쿼리를 최적화 해주는 것도 하나의 방법이라 생각합니다.

적절한 인덱스를 추가하여 조회 성능을 개선 할 수 있으며 g5_shop_order 테이블의 mb_id, od_hp, od_time, od_id 필드에 인덱스를 생성하는 것도 좋은 방법이라 생각합니다

예를 들어 아래와 같이 하시면 어느 정도 속도 개선에 도움 이 되지 않을까 합니다.


SELECT
    o.od_id,
    o.mb_id,
    o.od_time,
    (
        SELECT COUNT(*) + 1
        FROM g5_shop_order o2
        LEFT JOIN g5_shop_order o3 ON o3.mb_id = o.mb_id AND o3.od_time <= o.od_time AND o3.od_id < o.od_id
        WHERE o2.mb_id = o.mb_id OR (o.mb_id = '' AND o2.od_hp = o.od_hp)
    ) AS record_count
FROM
    g5_shop_order o

참고하셔서 g5_shop_order 테이블의 필드와 인덱스는 실제 테이블 구조에 맞게 수정하시면 될 것 같습니다

여기 오셔서 많은 얘기 나누면서 고민 해결에 도움이 되세요

https://open.kakao.com/o/gzNuQjhe

 

#

join에 대해서 좀 알아보시면 될것 같아요

 

99219C345BE91A7E32

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT