복합키의 인덱스에 관하여 0 3 136

by 김구덕 [DB 기타] 복합키 인덱스 [2021.07.19 17:14:21]


안녕하세요.

데이터베이스 설계를 공부하던중 복합키를 사용하면 WHERE절을 이용하여 검색시에 복합키를 건 순서대로 적어줘야 인덱스를 탄다는 글을 볼 수 있었습니다. 링크

해당 글을보고 어떤 이유 때문에 순서를 반드시 지켜야 하는지를 알고 싶으나 짧은 지식으로 인해 해당 이유를 못찾고 있습니다.

현재 예상으로는 복합키로 걸면 클러스터드인덱스로 복합 인덱스가 생성되고, 그 복합인덱스가 순서가 반드시 지켜져야 하는 자료구조로 되어있지 않을까 싶습니다.


1. 제가 예상한 이유가 맞는지?
2. 틀리다면 어떤 이유에서 그러는 것인지?
3. 복합 인덱스의 자료구조는 어떻게 되어있는지? ( 키워드라도 알려주시면 감사하겠습니다..)

해당 질문들에 대한 정보 주시면 정말 감사하겠습니다!

 

by 우리집아찌 [2021.07.20 08:14:30]

인덱스를 만들면 sql 하나만 쓰지 않지요

전부 고려해서 인덱스를 구성하는데 문제는 인덱스가 선두 컬럼이 꼭 조회조건에 들어가야합니다

인덱스 구성이 a , b , c 로 되어있다면

where a = 1 and b= 1  -> 인덱스 가능

where b = 1 and c = 1 -> 인덱스 불가

whete a= 1 and c= 1 -> 인덱스 가능

이런식으로 나옵니다 그러니까 인데스 설계시 선구 컬럼이 나와야지 많은 인덱스를 안 들수 있습니다


by 마농 [2021.07.20 08:29:17]

인덱스 구조는 정렬된 구조이기 때문에 빠르게 자료를 찾을 수 있습니다.
예를 들면, 단어가 정렬되어 있는 사전에서 단어를 검색한다고 했을 때.
"가"로 시작하는 단어는 필요한 부분만 빠르게 찾을 수 있지만.(인덱스스캔)
중간에 "가"가 들어가는 단어를 찾으려면 사전 전체를 훑어봐야만 합니다.(풀스캔)
즉, 선두 컬럼 조건 없이는 인덱스 이용이 불가능 하다는 것이죠.
인덱스 구조는 B-Tree 형태로 되어 있습니다.
http://wiki.gurubee.net/pages/viewpage.action?pageId=29065492


by 김구덕 [2021.07.20 11:47:27]

우리집아찌님 마농님 답변 감사합니다

"가"라는 예시를 들어 설명해주시니 이해가 잘 되네요.
답변 정말 감사합니다.

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