데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
테이블 A
COL1 COL2 STATUS
<쿼리>
SELECT COUNT(*) FROM A ==> 4,892,456
SELECT COUNT(*) FROM A WHERE STATUS = 'ON' ==> 777,381
<인덱스 생성>
Create index ix2_A on A (COL1) ON [PRIMARY]
Create index ix2_A on A (STATUS) ON [PRIMARY]
<쿼리>
SELECT COL1, CO2, STATUS FROM A
WHERE STATUS = 'ON'
이렇게 했는데 1분 1초가 걸렸습니다.
약 500만건 미만의 레코드에서 하나의 조건으로 1분 정도 걸리는게 정상 인가요?
인덱스 생성이 잘못된 것인지 문의 합니다.
위 쿼리는 실제실행계획을 보면 알겠지만 풀스캔을 탈것으로 예상됩니다.
4,892,456 중 777,381 건수는 대략 20프로 정도를 밀도를 보이는데..
대략 0.3 이하로 내려가야지 인덱스를 탈수 가 있습니다..
ps) 질문 게시판으로 가는게 좋지 않을까요 ㅎㅎ