복합키 생성 상태에 단일키 검색시 0 4 9,483

by Jin 복합키 단일키 검색 [2012.07.30 09:51:29]


강좌와 QNA 검색하다 없어서 질문드립니다.

기존 테이블에 기본키가 복합키로(항목 1개 이상) 생성되어 있습니다.
다른 키는 없고용, 해당 테이블에 오직 복합키만 잡혀있습니다.

이런 경우 테이블 조회시
조건절에 복합키에 대항하는 항목들이 전부 기술안되고
복합키에 있는 항목중 1개만 조건절에 있을 경우
인덱스를 타는지 궁금합니다.

복합키에 있는 값으로도 조회가 많지만,
복합키에 있는 특정 단일 항목으로도 조회가 많다면 단일 인덱스를 잡아줘야 할까용? @.@)??
by 마농 [2012.07.30 10:21:26]

결합인덱스의 경우에도 컬럼에 순서가 있습니다.
선행 컬럼부터 차례로 조건을 준다면 일부 조건만으로도 인덱스 탑니다.
그러나 선행 조건 없이 중간이나 말단 항목만 조건으로 준다면 인덱스 못탑니다.

인덱스 스킵스캔이라고 인덱스를 타기도 합니다만...일반적으론 안탄다고 보시는게 좋습니다.

자주 사용되는 쿼리의 조건이 선행 조건 없이 중간조건만 있고 빠른 응답시간이 요구된다면?
별도 인덱스 생성을 고려해 보세요.


by Jin [2012.07.30 10:56:16]

마농 / 빠른 답변감사합니다.
그럼 아래 내용이, 이해한 것이 바른 것인지 확인가능할까용?

(조직코드 ASC, 상품명 ASC, 날짜 ASC) 순서로 복합키를 잡은 상태에서
말씀주신 선행 컬럼부터 일부 조건을 주면 인덱스를 탄다고 한다면,

"WHERE 조직코드 = '국가기록원' AND 상품명 = '11103A' " 이 경우는 인덱스를 타고
"WHERE 조직코드 = '국가기록원' AND 날짜 = '20120730'"  이 경우와
"WHERE 날짜 = '20120730'" 이 경우는 인덱스를 안탄다는 말씀이신가용? @,@);; 헤헷.

by 마농 [2012.07.30 11:45:11]
1. 인덱스 레인지 스캔 (2개 컬럼으로 인덱스 범위 스캔)
2. 인덱스 레인지 스캔 (1개 컬럼만 이용해 인덱스 범위 스캔후 나머지 한개 컬럼은 필터조건)
3. 풀스캔

by Jin [2012.07.30 12:18:15]

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