database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 7106 게시물 읽기
No. 7106
MSSQL 쿼리속도 질문
작성자
킨들(kindle)
작성일
2018-01-14 06:14
조회수
2,585

 안녕하세요. 쿼리짜던 도중 이상한 현상이 있어서 질문을 올립니다

현재 사용디비는 MSSQL 입니다.

쿼리를 보시면 도움이 되시겠지만 보안상 올릴 수 없음을 양해 부탁 드립니다. 

 

기존 쿼리가 테이블 4개정도 조인해서 쓰던 쿼리였으나 추가로 보여줄 컬럼이 하나 생겨서, 테이블 조인을 하나 더 하고나서 where 절 Date 컬럼에 특정 기간 이상 조건을 주고나서 이상이 생겼습니다.

42일치를 조회하면 10초면 가져오던 쿼리가 43일치를 조회하면 5~10분을 기다려도 조회가 되지 않는 경가 생겼습니다.

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

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

 

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

 

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

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

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

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

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

이 글에 대한 댓글이 총 2건 있습니다.

 42일과 43일치 쿼리에

실행 계획(Plan)을 비교해 보시기 바랍니다.

 

가져오는 데이터가 일정 비율 이상이 되면

index 스캔이 아니라 full 스캔으로 실행 계획이 변경되는 경우가 많습니다.

박인호(paerae)님이 2018-01-15 11:23에 작성한 댓글입니다.

 답변 감사합니다. 

킨들(kindle)님이 2018-01-16 04:15에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
7109쿼리 조인 질문드립니다. [1]
asdf
2018-02-08
2154
7108MSSQL 2000 설치 질문(설치 화면이 안나오는 현상)
민준기
2018-01-26
2206
7107서브쿼리 [7]
lhh
2018-01-19
2770
7106MSSQL 쿼리속도 질문 [2]
킨들
2018-01-14
2585
7105checkdb 시 오류 [2]
조성배
2018-01-10
2671
7104[질문]데이터에서 1을 만날때 값을 시퀀스하게 증가시키기 [2]
말말말초보
2017-11-16
2442
7103컬럼의 데이터 값을 Row 형태로 조회 [1]
초보
2017-11-09
2551
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다