-- 참고 : 생활코딩 mysql수업
--설계시 참고사항 : http://egloos.zum.com/tiger5net/v/5660848
인덱스란?
--색인, 조회할 때 원하는 행을 빠르게 찾을 수 있게 준비해둔 데이터
--일명의 책갈피를 꽂아놓아서 일반 검색보다 더 빠르게 데이터를 가져올 수 있음
--테이블이 쿼리에 있는 컬럼에 대한 인덱스를 갖고있다면, mysql은 모든 데이터를 조사하지않고 데이터 파일의
중간에서 검색위치를 빠르게 잡아낸다.
인덱스의 종류
1. primary key : 중복되지 않는 유일한 키 (ex. id값)
각각의 행을 테이블에서 식별하는 유일무이한 키
가장 고속으로 데이터를 가져올 수 있음
2. unique key : 중복을 허용하지 않는 유일한 키
테이블 전체를 통틀어 중복되지않는 값을 지정해야함 (=primary key)
여러 열의 unique key를 지정할 수 있음
학번과 같은 데이터 ( 중복되지 않음 ) 는 유니크 키가 될 수 있음
3. normal key : 중복을 허용하는 인덱스
중복을 허용하는 키
여러개의 키를 지정할 수 있음 (한번 지정할 때 2개이상의 열을 한번에 지정할 수 있음)
4. foreign key : 다른 테이블과 관계성을 부여 ( FK라고 표현 )
join과 관련
5. full text :
--스토리지 엔진 중 myisam에서만 사용가능
--한글 검색이 잘 안될 수 있음
--mysql의 기본설정(ft_min_word_len)이 4로 되어있기 때문에 조정이 필요함
예제 >>
테이블 생성시 키 삽입
PRIMARY
KEY
(`id`), // primary key 지정
UNIQUE
KEY
`idx_number` (`number`) USING BTREE, // unique key 지정
KEY
`idx_department` (`department`), // 일반키 지정
KEY
`idx_department_name` (`department`,`address`), // 일반키 여러열 지정
FULLTEXT
KEY
`idx_introduction` (`introduction`) // 풀텍스트
인덱스를 쓰는 방법
--자주 조회되는 칼럼에 적용
--조회 시 오랜시간을 소모하는 컬럼에 적용
--url과 같이 데이터가 긴 경우에는 디스크상의 용량이 많이 차지하기때문에 중시하지 않음
(데이터가 긴 경우 해쉬와 같이 데이터를 짧게 만드는 방법을 씀)
인덱스를 사용해야 하는 경우
--데이터의 양이 많고 검색이 변경보다 빈번한 경우
--인덱스를 걸고자 하는 필드의 값이 다양한 값을 가지는 경우
'데이터베이스' 카테고리의 다른 글
[mysql] UNION (0) | 2016.02.18 |
---|---|
[mysql] JOIN (0) | 2016.02.18 |
[mysql] 데이터 조회 (select문) (0) | 2016.02.09 |
[mysql] 데이터 삽입, 수정, 삭제 (0) | 2016.02.02 |
[mysql] 테이블 생성 및 삭제 (0) | 2016.02.02 |