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