데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
컬럼 약 25개(INT 위주) 인 테이블에
time 컬럼에 논클러스터드,논유니크로 인덱스가 1개 걸려있는 상황인데
Time을 조건으로 걸고 쿼리를 날리면 테이블스캔을 진행합니다
이후 찾아보니까 강제로 인덱스를 걸면 그때야 인덱스스캔을 하고
Select를 * 이아닌 Time만 진행하면 또 다르게 인덱스를 타네요
원인이 무엇인지 모르겠습니다
Comment 1
-
이리
2021.01.29 09:15
index seek가 항상 효율적이진 않습니다.
올려주신 내용만 봤을때는 optimizer가 lookup 비용이 더 비싸다고 판단해서 스캔을 하는것 같습니다.
SET STATISTICS IO ON 하시고 쿼리를 실행 하셔서 논리적 읽기 수 비교를 해보시거나
profiler로 실행하는 쿼리를 잡아서 Reads를 비교해 보세요