우잉's Development

SQLite3_Index 인덱스 본문

개발/SQLite3

SQLite3_Index 인덱스

우잉이 2021. 12. 31. 10:55
728x90
반응형

1. 인덱스 (index) 

: 테이블의 정보를 검색했을 때 검색 속도를 높이기 위해 사용하는 하나의 기술.

id name address old
1 Kim Seoul 23
2 Han Gyeonggi 20
3 Lee Busan 18
4 Cho Seoul 17
5 Song Daejeon 38
6 Jin Seoul 19

name컬럼의 값을 검색하려고 할 때, 테이블에 저장되는 데이터는 차례로 나열되어 있는 것이 아니므로 

원하는 데이터가 있는지 차례로 검색해 나가야 합니다. 많은 양의 데이터가 저장되어 있는 경우 위에서 

부터 찾아가는 것은 매우 비효율적입니다. 이러한 경우 인덱스를 생성하면 검색 속도를 향상 시킬수 있습니다.

 

2. 인덱스의 장단점

1) 장점

    : 많은 양의 데이터를 검색할 때 빠르게 검색가능  

2) 단점

  ① 테이블과는 별도로 데이터를 독자적으로 보유하고 있기 때문에 테이블에 데이터를 추가하면 인덱스에도 

      데이터가 추가된다. 또한 데이터 추가 할 때마다 정렬도 다시 이루어진다. -> 처리속도 느려짐

  ② 데이터의 양이 적거나 종류가 적은 컬럼에 인텍스를 생성해도 효과가 많이 없다. -> 적은양은 생성의미 없음.

 

즉, 인덱스는 유용하지만 데이터 추가시 처리가 무거워지는 단점이 있다.

테이블마다 인덱스가 필요한지 검토 후 생성하도록 !

 

3. 인덱스 생성 

CREATE INDEX 인덱스명 ON 테이블명 (컬럼명1, 컬럼명2, ... ) ;

nameindex라고 설정하였다 그러고 검색하면 아래와 같이 인덱스는 나오지 않지만 생성되었는지 아닌지를 

의식할 필요가 없다. 

생성되었는지 확인하려면 위와 같이 .indices로 확인할 수있다.

 

4. UNIQUE 인덱스 

: 인덱스의 대상이 되는 테이블의 컬럼에 저장되는 값은 중복된 값이 포함되어 있어도 상관 없지만, 중복 값을 

허용하지 않도록 설정할 수있다.  이러한 인덱스를 유니크 인덱스라고 한다. 

유니크 인덱스 생성

CREATE UNIQUE INDEX 인덱스명 ON 테이블명(컬럼명1, 컬럼명2, ... ); 

대상이 되는 컬럼에 중복된 값이 포함되어 있으면 유니크 인덱스는 만들 수 없다. 또한 유니크 인덱스를 생성한

후에 유니크 인덱스의 대상인 컬럼에 이미 저장되어 있는 값과 동일한 데이터는 테이블에 추가할 수 없다.

여러 컬럼의 조합하여 인덱스를 작성하는 경우에는 각각의 컬럼에서 중복된 값이 포함되어 있어도 지정된 모든

컬럼 값의 조합이 중복되지 않으면 유니크 인덱스를 만들 수 있다.

Kim이라는 name을 중복하여 추가할 때 UNIQUE에러가 발생한다. 

그러나, NULL은 유니크 인덱스가 생성되는 컬럼에도 데이터 중복 저장할 수 있다.

 

5. Index 삭제

DROP INDEX 인덱스명;

 

728x90
반응형

'개발 > SQLite3' 카테고리의 다른 글

SQLite3_데이터 추가와 수정, 삭제  (0) 2022.01.04
SQLite3_ trigger 트리거  (0) 2021.12.31
SQLite3_View 뷰  (0) 2021.12.29
SQLite3_Table 2_제약 조건2  (0) 2021.12.29
SQLite3_Table 2_제약 조건1  (0) 2021.12.28
Comments