쿼리 속도 개선 방법 0 3 686

by 밥하는남자 [2018.11.22 15:54:49]


안녕하세요. 
아래와 같은 쿼리가 존재하는 경우에 속도 개선을 어떻게 해야할까요?

데이터는 약 500만건 정도 됩니다. 조인 없이 하나의 테이블만 사용하고요.
해당 쿼리가 약 2분 정도 걸리고요. ORDERBY를 지우면 1분 내로 조회되긴 합니다.

select * 
  from table
where 날짜 = 20181122
   and 이름 = '홍길동'
   and 회사 in ('삼', '엘')
order by 회사, 부서, 파트

 

by 마농 [2018.11.22 16:01:15]

500만건이 결과 건수인가요? 전체 건수 인가요?
조건 항목이 포함된 인덱스가 존재하는지 확인하세요.
조건 항목의 자료형을 확인하세요. 특히 날짜 항목.
* 대신 꼭 필요한 항목만 나열하세요.


by 밥하는남자 [2018.11.22 16:09:11]

1. 500만건은 전체 건수입니다. 해당 쿼리 결과값은 약 50만건 정도 됩니다.

2. 인덱스는 날짜, 이름, 회사 로 인덱스를 타도록 했으나 ORDER BY절 때문에 느리네요

3. 조건항목의 자료형은 날짜가 NUMBER 입니다.

4. 필요한 항목이 전체이기 때문에 * 를 사용하였습니다. 

-> 제 생각은 결론적으로 인덱스를 좋은 방향으로 구성해야 할거 같은데요. 구글링해보면서 해봐도 개선이 안되네요.ㅠㅠ


by 마농 [2018.11.22 16:14:01]

플랜은 확인하셨나요?
인덱스 타는 것 맞나요?
50만건 이면 인덱스 스캔보다 그냥 풀스캔이 더 나을 수도 있습니다.
50만건 정렬 하려면 그만큼 시간이 걸릴 수 밖에 없구요.
정렬 없이 정렬결과 얻으려면 인덱스에 항목을 추가하셔야 합니다.
(날짜, 이름, 회사, 부서, 파트)

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