Index(mysql)
2015. 8. 18. 08:50ㆍ프로그래밍/Database
728x90
728x90
정의
색인, 조회할 때 원하는 행을 빠르게 찾을 수 있게 준비해둔 데이터를 말한다.
사용해야 하는 경우
데이터 양이 많고 검색이 변경보다 빈번한 경우
인덱스를 걸고자 하는 필드의 값이 다양한 값을 가지는 경우
종류
primary : 중복되지 않은 유일 키
- where문을 이용하여 데이터를 조회할 때 가장 고속으로 데이터를 가져온다.
- 테이블마다 딱 하나의 primary key를 가질 수 있다.
unique : 중복을 허용하지 않는 유일한 키
- 고속으로 데이터를 가져올 수 있다.
- 여러개의 unique key를 지정할 수 있다.
normal : 중복을 허용하는 인덱스
- primary, unique보다 속도가 느리다.
- 여러개의 키를 지정할 수 있다.
full text : 검색 엔진과 유사한 방법으로 자연 언어를 이용해 검색할 수 있는
특별한 인덱스로 모든 데이터 문자열의 단어를 저장하기 때문.
- MySQL의 기본 저장 엔진 타입인 MyISAM 테이블에만 사용된다.
- FULLTEXT 인덱스는 CHAR와 VARCHAR, TEXT 열로만 생성 가능하다.
INDEX 명령어 사용하기
1 2 3 4 5 6 7 8 | 테이블 생성시 인덱스 추가 create table tbl_name ( data datatype(size), index(data(size))) engine myisam; 기존 테이블에 인덱스 추가 alter table tbl_name add index(data(size)); | cs |
예시
student 테이블 create 쿼리문.
1 2 3 4 5 6 7 8 9 10 11 12 13 | CREATE TABLE `student` ( `id` tinyint(4) NOT NULL AUTO_INCREMENT, `name` char(4) NOT NULL, `address` varchar(50) NOT NULL, `department` enum('국문과','영문과','컴퓨터공학과','전자공학과','물리학과') NOT NULL, `introduction` text NOT NULL, `number` char(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_number` (`number`) USING BTREE, KEY `idx_department` (`department`), KEY `idx_department_name` (`department`,`address`), FULLTEXT KEY `idx_introduction` (`introduction`) ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8; | cs |
primary key select
unique key select
normal select
full text
index example
728x90
반응형
'프로그래밍 > Database' 카테고리의 다른 글
[DB] Upsert (1) | 2017.03.30 |
---|---|
[mssql2008] db log 용량 줄이기 (2) | 2016.12.23 |
데이터베이스 고급 기능 (0) | 2015.08.13 |
저장프로시저(MS-SQL 환경) (0) | 2015.08.12 |
관계형 데이터베이스 모델과 언어 (0) | 2015.08.11 |
데이터 모델링과 설계 (0) | 2015.08.11 |
정보 시스템 (0) | 2015.08.11 |