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

정보공유

[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 463건 1 페이지
번호 제목 글쓴이 날짜 조회
463 GROUP_CONCAT 길이 제한 때문에 결과값을 다 못가져오는 경우 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 08-26 238
462 회원아이디 자동 생성 함수 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 08-20 334
461 중앙 토스트 레이어 , 버튼을 클릭하면 화면 중앙에 3초간 보였다가 fadeout 되는 레이어창. 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 08-19 310
460 관리자 권한이 super 아니고 관리권한설정을 부여받은 회원이 관리자 화면에 접속했을때 부여받은 메뉴로 바로 접속되도록 처리 (2) 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 08-15 412
459 관리자 권한이 super 아니고 관리권한설정을 부여받은 회원이 관리자 화면에 접속했을때 부여받은 메뉴로 바로 접속되도록 처리 (1) 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 08-15 404
458 SQL 주입 방지 Prepared Statement 의 생활화 mysqli PDO 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 08-15 356
457 크로스 사이트 스크립팅(XSS) 테스트 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 08-12 416
456 2일전부터 오늘까지의 데이터 정보 가져오기. 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 08-05 436
455 text input 박스 에 휴대폰번호 입력할때 자동으로 하이픈 넣기 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 07-18 567
454 주소 정보 입력시 다음우편번호 스크립트를 사용할때 배열처리 할 경우 오류 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 07-11 739
453 자바스크립트를 이용해서 버튼 클릭시 이미지로 저장하는 방법 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 05-30 1264
452 내부망의 자료를 외부에 연결해서 사용하게 하고 싶을때 사용하는 ngrok 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 05-27 1413
451 html 폴더 생성하고 html 하위 파일은 확장자 없이도 연결가능하도록 .htaccess 파일 설정하기 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 05-21 1510
450 on off 가능한 checkbox css + jquery 조합 버튼 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 05-17 1435
449 비동기식으로 초성 버튼 클릭 보여주기 위토즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 05-13 1569