Index (1)
Index ?
데이터를 빠르게 찾을 수 있게 하는 하나의 도구로 보면 된다.
ex) 책의 뒤에 존재하는 찾아보기 같은 개념이라 생각 하면 된다.
Index의 장단점
Index의 장점으로는 데이터가 아주 많을 때 기존보다 아주 빠른 응답속도로 쿼리의 결과를 얻을 수 있다는 점이 있다.
컴퓨터의 입장에서는 적은 처리량으로 요청한 결과를 빨리 얻을 수 있으므로 결과적으로 전체 시스템의 성능이 향상된다고도 볼 수 있다.
Index의 단점으로는 아무래도 Index를 담을 새로운 공간이 데이터베이스에 필요하다는 점과, 초기 Index 생성시 시간이 오래걸린다는 점이 존재한다, 또 무분별하게 Index를 생성하게 되면 ? > 책의 찾아보기에 하나의 단어가 이곳 저곳에 있어 찾는데 복잡해지는 것과 같은 현상이 발생한다.
Index 크게 두가지 종류로 나뉜다.
- Clusterd Index : 쉽게 표현하면 영어사전 같은 느낌이다.
- PK로 지정 시 자동으로 생성되며, 해당 PK Column을 기준으로 자동 정렬 된다.
- Secondary Index : 쉽게 표현하면 책의 찾아보기 같은 느낌이다.
- Secondary Index는 Clusterd Index와 다르게 정렬되지 않는다.
인덱스는 테이블의 Column 단위에 생성되며 하나의 Column에 하나의 Index를 생성할 수 있다. (사실 여러개 Index를 만들 수 있고, 여러개의 Column을 묶어 하나의 Index를 생성할 수도 있지만 드문 경우라고 한다.)
Primary Key로 Column을 생성하면 해당 Column에 Clusterd Index가 생성된다.
-> Primary key는 테이블에 보통 하나만 지정된다.
-> Clusterd Index는 테이블에 한개만 만들 수 있다.
테이블에서 인덱스를 조회할 때는 다음과 같은 Query를 사용한다.
SHOW INDEX FROM TABLE;
해당 Query문을 실행시키고 Key_name에 PRIMARY값이 들어 있는 경우는 PK로 설정하여 자동으로 생성된 Index라는 의미이다.
Column_name에 있는 값은 어느 Column에 Index가 만들어 져있다는 뜻이며, Non_Unique같은경우 0-false, 1-true 값을 갖는다.
Unique_Index 같은 경우 PK, 혹은 Unique로 지정한 Column에서만 생성 할 수 있으며 고유한 Index로 값이 중복되지 않아야 한다. 그 외는 단순 Index로 생성 된다.
그러나 Unique한 Index라고 Clutsterd Index가 아니다 ! -> PK로 생성된 Index만임을 유의한다. 나머지는 Secondary Index이다.