쿼리 속도 질문 0 5 1,245

by kindle [SQL Query] 쿼리 속도 mssql [2018.01.13 01:21:28]


안녕하세요. 쿼리 짜던 도중 어제 이상한 현상에 대해서 질문을 올릴까 합니다.

현재 사용 db는 mssql 입니다

쿼리를 보시면 좀더 도움 되시리라 생각하지만 보안상 올릴 수 없음을 양해부탁 드립니다.

 

기존 쿼리가 테이블 4개정도 조인해서 쓰던 쿼리였으나

추가로 보여줄 컬럼이 하나 생겨서, 테이블 조인을 하나 더 하고나서 

where 절 Date 컬럼에 특정 기간 이상 조건을 주고나서 이상이 생겼습니다.

42일치를 조회하면 10초면 가져오던 쿼리가

43일치를 조회하면 5~10분을 기다려도 조회가 되지 않는 경우가 생겼습니다.

데이터 개수 약 100만개 중에서 가져오고 싶은 데이터 (약 30일치) 는 10만개 정도 됩니다.

10일, 15일, 25일 등등은 문제 없다가 42일과 43일 하루 차이로 이런 결과가 어떻게 나올 수 있는지 궁굼합니다.

 

여기서 마지막에 추가된 테이블은 공통적으로 사용되는 컬럼값 정도 가져오는 수준이라 데이터개수가 총 2만개 정도밖에 되지 않습니다. 

 

마지막 추가된 테이블의 데이터를 필요한것만 가져오게 쿼리를 수정하여 당장 해결은 하였으나, 

이런 이상한 현상이 처음이라 질문을 올리게 되었습니다.

인덱스는 오라클 쓸 때 hint 써서 강제로 태워 조금 시간을 단축하거나 했던 경험은 있지만

그 외 튜닝이나 성능 관련은 잘 모릅니다. DB 성능관련에 문제가 있는건가요? 아니면 단순 쿼리짜는 스킬이 부족하여 무언가를 잘못 하고있는걸까요?

비슷한 경험을 해보신적 있거나 알고 계신분은 답변 부탁드리겠습니다.

 

by 마농 [2018.01.15 09:10:07]

조건값에 따라 실행계획이 바뀔 수 있습니다.
인덱스 스캔이 유리한 경우는 많은 자료중 극히 일부 자료를 조회할때 입니다.
조회되는 자료량이 늘어나면 인덱스 스캔이 점점 불리해 집니다.


by kindle [2018.01.16 04:12:48]

예전 오라클 쓸 때 유료툴로 실행계획 보며 작업했던 기억이 있습니다. 지금은 기본제공 mssql stduio 툴을 쓰느라 없는거 같네요. 아무래도 조금 더 공부가 필요한가봅니다... 답변 감사합니다.


by 마농 [2018.01.16 08:16:17]

Ctrl+L


by 우리집아찌 [2018.01.15 13:40:26]

DATE 컬럼이 맞으신지요?

혹시 VARCHAR칼럼에  조회조건이 년을 사이(예:20171231~20180130)에 두고 계신지요? 


by kindle [2018.01.16 04:13:18]

칼럼은 datetime 입니다. 같은 년도끼리 조회해도 현상은 같습니다.

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