위토즈 - 개발자프로그램판매공간

정보공유

[SQL] 쿼리 성능 최적화

SELECT rm_ix, rm_date, rm_pos, rm_subject

FROM (SELECT COUNT(*) AS cnt, b.rm_ix, b.rm_subject FROM tblA as a inner join tblB as b on a.idx = b.idx where a.bk_status in ('대기', '완료') GROUP BY b.rm_ix, b.rm_date, b.rm_pos) AS GP

WHERE GP.cnt > 1

ORDER BY rm_date, rm_pos, cnt


를 아래와 같이 성능을 개선해서 사용가능하다.


1. 인덱스 최적화: tblA.bk_status, tblB.idx, tblB.rm_ix, tblB.rm_date 등에 적절한 인덱스를 추가.

2. 서브쿼리 제거: 현재 서브쿼리로 COUNT(*)를 계산한 후 필터링하는데, HAVING COUNT(*) > 1을 사용하면 불필요한 중첩을 줄일 수 있음.

3. JOIN 순서 최적화: g5_wb_booking을 먼저 필터링한 후 g5_wb_booking_location과 JOIN하면 불필요한 데이터 로딩을 줄일 수 있음.


SELECT 

    b.rm_ix, 

    b.rm_date, 

    b.rm_pos, 

    COUNT(*) AS cnt, 

    b.rm_subject

FROM tblA AS a

INNER JOIN tblB AS b 

    ON a.idx = b.idx

WHERE a.bk_status IN ('대기', '완료')

GROUP BY b.rm_ix, b.rm_date, b.rm_pos, b.rm_subject

HAVING COUNT(*) > 1

ORDER BY b.rm_date, b.rm_pos, cnt DESC;



개선 사항:

1. 서브쿼리 제거 → 직접 HAVING COUNT(*) > 1 사용하여 필터링.

2. 인덱스 활용 → tblA.bk_status 에 인덱스가 있으면 필터링 속도 증가.

3. 필요한 컬럼만 GROUP BY → 기존보다 더 많은 컬럼을 그룹핑해서 중복을 최소화.




인덱스를 확인하고 없으면 추가.


CREATE INDEX idx_booking_status ON tblA (bk_status);

CREATE INDEX idx_booking_location ON tblB (idx, rm_ix, rm_date, rm_pos);

정보공유
Total 447건 1 페이지
번호 제목 글쓴이 날짜 조회
열람중 쿼리 성능 최적화 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-07 249
446 스마트 에디터 세로 사이즈 강제로 해당 페이지에서만 늘리는 방법 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-28 394
445 그누보드에 reCAPTCHA 설정하기 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 01-07 804
444 mb_id 가 포함된 테이블 목록 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-22 1336
443 숫자형 input 요소 글자수 제한 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 08-29 2039
442 php 8.0 이상 버전에서 엑셀파일 업로드 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 07-18 3138
441 금액 카운팅 모션 다라라락 변화 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 06-26 2615
440 가장 심플한 예약 주문번호 생성 코드 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 05-28 3455
439 php 와 ajax 를 이용해서 파일 업로드 할때 대용량 파일을 업로드 하는 방법 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 05-23 3718
438 dl dt dd css 샘플 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 05-13 2905
437 datepicker 를 이용해서 달력3개를 표시하고 원하는 날짜만 선택이 가능하도록. 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 04-28 3271
436 입금된 주문도 준비, 배송전까지는 취소할 수 있도록 하는 방법 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-10 3566
435 CSS를 사용하여 4x4 형태의 갤러리 디자인 그리드 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-05 3394
434 magnificPopup css 를 추가하여 popup 마다 다른 사이즈 로 띄우기. 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 01-16 3994
433 magnificPopup 조건이 맞지 않으면 popup 띄우지 않기. 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 01-12 3966