데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
안녕하세요?
여기서 매번 많은 도움 받고있습니다. 감사합니다.
어설프게 개념만 알아서 힘드네요..ㅠㅠ
복합인덱스 사용중인데
컬럼 A, B 이렇게 복합 인덱스 사용중 입니다. (정확히 말하면 B 컬럼은 INCLUDE 하고 있습니다.)
SELECT B
FROM table
WHERE A = 100
위처럼 자주쓰는 쿼리가 있고
SELECT A
FROM table
WHERE B = 200
이또한 자주 쓰는 쿼리가 있습니다.
이때 복합인덱스를 한개 더 만드는건지 궁금합니다.
B 컬럼 인덱스 INCLUDE(A)
요약하자면
A 컬럼 인덱스, INCLUDE(B)
B 컬럼 인덱스, INCLUDE(A)
하나의 테이블에 이런 인덱스 두개 만들어서 사용하는게 맞는지요?
왠지 낭비인거 같이도 하고.. 좋은 방법이 있을것 같은데 검색해도 잘 안나와서요
* 참고로 테이블에는 클러스터인덱스는 없습니다.
Comment 2
-
항해자™
2016.03.22 08:50
-
자리비움
2016.03.23 15:41
WHERE A = 100 , WHERE B = 2001.위 2개 조건은 복합 인덱스 여부와 별개로 인덱스를 잘 사용할 수 있는(성능 상 이점이 있다면) 상태라면 인덱스가 둘 다 있어야 합니다.2.단순히 A컬럼 조건으로 B컬럼만 조회하거나, B컬럼 조건으로 A컬럼만 조회한다면 둘 다 include index 로 설정하는게 좋습니다.추가로,1. include 인덱스로 설정이 되어있고, 넌클러스터드 인덱스 레벨에서 모든 데이터가 조회된다면 굳이 clustered index 일 필요는 없습니다.2. clustered index 의 장점을 찾아보시기를 권해드립니다.
덧붙이자면 특별한 경우가 아니라면 클러스터 인덱스가 있는 편이 여러모로 좋습니다^^;;