inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스

복합 인덱스

복합 인덱스 강의 중 궁금한 사항이 있어 질문 드립니다.

263

D Why

작성한 질문수 4

3

안녕하세요.

복합 인덱스 강의를 듣다가 이해가 잘 되지 않는 부분이 있어 질문드립니다.

강의 중에 "인덱스(A, B) 사용중이라면 인덱스(A) 없어도 무방 하지만 B로도 검색이 필요하면 인덱스(B)는 별도로 걸어줘야 함"이라는 부분이 잘 이해가 되지 않습니다.

위의 말의 뜻은 인덱스(A, B) 형태로 복합 인덱스를 사용한다면 인덱스(A, B)를 이용해 검색을 하거나 인덱스(A)를 이용해 검색을 한다면 별도로 인덱스 A만 사용해서 별도의 인덱스를 만들 필요가 없다는 뜻이고, "B로도 검색이 필요하면 인덱스(B)는 별도로 걸어줘야 함"이라는 건 인덱스(B)만 사용해서 뭔가 검색을 하고 싶을 때는 인덱스(B)를 별도로 만들어서 사용해야한다.라는 뜻인가요??

sql DBMS/RDBMS

답변 1

6

Rookiss

안녕하세요,
설명이 살짝 헷갈리는데 이해하신 것이 맞습니다.

요약하면 index_ab(A, B)가 걸려 있는 상태에서,
 - (A,B)를 조건으로 하는 검색을 하면 당연히 index_ab의 덕을 볼 수 있다.
 - (A)를 단일 조건으로 하는 검색을 해도 index_ab의 덕을 볼 수 있다.
 - (B)를 조건으로 하는 검색을 하면 index_ab의 덕을 볼 수 없다 (!) -> 무식하게 다 서칭하는거랑 똑같다

즉 복합 인덱스를 (A,B) 순서로 걸었는지, (B,A) 순서로 걸었는지가 매우 중요하다는 의미가 됩니다.
실제로 인덱스(A, B)를 걸 때 데이터가 정렬된 순서를 생각해보면 
우선 A를 이용해 정렬을 하되, A가 동일한 경우에만 B를 이용해 둘 사이의 우선순위를 정하게 됩니다.
따라서 전체 데이터를 (B) 조건을 이용해서 서칭하면 아예 인덱스의 구실을 못하게 된다는 얘기죠.
ex) A가 int, B가 varchar이라고 가정하고
(2, 'lucian')(1, 'veigar')(2, 'aatrox') 이렇게 데이터를 넣으면 
우선 A 순서로 정렬하고, 같을 경우에만 B를 사용하니
(1, 'veigar') (2, 'aatrox')(2, 'lucian')  이렇게 데이터가 정렬될겁니다.
이 상태에서 B가 'lucian'인 데이터를 찾으려고 해봤자,
전체 데이터가 B를 이용해 정렬된게 아니니까 다 스캔하는 방법밖엔 없게 됩니다.

참고로 신입 때 전 이 사실을 몰라서
(A,B) 복합 인덱스가 걸려 있는 상태에서 쿨하게 (A) 인덱스를 하나 더 걸어주는 뻘짓(?)을 한 기억이 있네요 OTL

최신 하드웨어에서 SQL Express 설치에러 해결법

0

60

1

인벤토리 테이플 데이터가 엄청 많아지면

0

98

2

DISTINCT의 행 개수와 COUNT(DISTICNT )의 결과가 왜 차이나는지 궁금합니다.

0

102

1

conect시 신뢰할 수 없는 기관에서 인증서 발급 오류 뜨시는분들

0

320

1

PRIMARY KEY와 CLUSTERED INDEX의 차이

0

332

1

락과 트랜잭션 격리수준 차이는 뭔가여?

0

535

1

외래 키 질문이 있습니다.

0

386

1

게임 프로젝트와 연동하는 강의 내용은 포함되어 있지 않는 건가요?

0

566

1

윈도우 함수는 SELECT에서만 사용가능한가요?

0

453

1

데이터 베이스가 만들어지지 않을 때

9

800

3

sql 강의 관련 질문

0

680

1

강의내용 외의 질문이 있습니다

0

583

1

sinter

0

361

1

테이블 여러개랑 조인

0

373

1

서버 컴퓨터 스펙에 따라서 성능 차이가 심한가요?

0

799

1

Non-Clustered 에서 clustered index 추가시

0

439

1

UNIQUE INDEX와 PRIMARY KEY의 기능적차이

0

584

1

Part5: 데이터베이스_ SSMS 입문 테이블작성 오류에관하여

2

904

2

인덱스의 저장 방식에 대해서 질문이 있습니다!

1

539

1

MSSQL vs AWS

0

365

1

join 관련 질문입니다.

0

288

2

Inner Join 질문

0

306

1

데이터베이스 원리는 CAP이론을 비유하여 설명하신 건지 궁금합니다.

1

401

0

CLUSTERED INDEX

1

305

1