반응형

DB 에선 2진 검색 트리를 사용한다, 균형잡힌 트리등 각 DB 마다 다를 순 있다

 

어떤 게임에서 특정 유저 ABC 에게 귓말을 날린다 하면 다른 방법을 쓰지 않는다면 모든 유저중에서 ABC 를 찾아야 하지만 이때 index 를 사용하면 빠르다

 

유저명순으로 이름들을 정렬한 다음 여기에  index 를 매긴다

즉 트리종류의 검색으로 빠르게 찾는것이 index 의 방식이다

이때 유저명에다가 index 를 걸어 찾기를 더 빠르게 한다는 개념

 

 

 INDEX 는 두가지 종류가 있다

  1. CLUSTERED INDEX  : 테이블당 1개만 존재하고 제일 빠르다, 공간도 적게 차지함
    Primary key 대부분이 clustered index 이다
    영한사전 처럼 알파벳 순서처럼 이미 데이터가 정렬이 되어 있고 여기서 찾는 것

  2. NON-CLUSTERED INDEX : 별다른 제한 없음
    별도의 공간에 색인목록을 만들어 색인 목록으로 한번 간다음 여기서 다시 데이터를 찾는 방식
    즉 따로 관리하는 Lookup테이블로 색인을 먼저 한다음 찾는다

 

디폴트로는 Primary key 로 지정하면 Clustered Index 인데, 지정을 Non - Clustered Index  로 한다면 이것도 가능은 하지만 이렇게 사용할일은 거의 없다

 

 

 

인덱스 지정하기

CREATE INDEX i1 ON accounts(accountName);

 

 

 

 

 

인덱스를 accountname 에 지정한다음 위 그림처럼 i1 으로 accountname  에 대한 인덱스가 지정된 것을 알 수있다

 

 

DROP INDEX accounts.i1;  

이렇게 인덱스를 삭제 할 수 있다

 

accountname 을 인덱스로 지정하는 상황은 이름으로 검색을 하는 경우를 예로 들 수 있다

 

 

CREATE UNIQUE INDEX i1 ON accounts(accountName);

--중복 되는 것이 없는 인덱스

 

 

CREATE CLUSTERED INDEX i1 ON accounts(accountName);

이렇게 지정하면 CLUSTERED 인덱스로 지정을 하려고 하지만 테이블에 하나만 클러스터 인덱스만 존재 함으로 추가로 지정하려 하면 오류가 난다

 

 

 

CREATE INDEX i1 ON accounts(accountName, ballCount);

이렇게 여러개를  조합하여 묶어 인덱스로 지정하는 것도 가능하다

 

 

 

 

 

 

반응형

+ Recent posts