MySQL

INDEX

yougeun 2022. 12. 2. 19:13
728x90

INDEX

검색을 빠르게 하기 위한 자료구조(대부분 B트리)

레코드 추가/수정/삭제 시 해당 컬럼으로 다시 정렬한 후 검색에 필요한 값들을 미리 계산해 검색 속도를 높임(trade off)

기본키는 자동으로 인덱스로 설정된다.

(1)인덱스가 설정된 기본키로 검색 했을 경우

employees 테이블의 기본 구조

select * from employees where emp_no=40000 LIMIT 0, 500
1 row(s) returned	0.000 sec / 0.000 sec

기본키로 설정된 emp_no으로 검색시 매우 적은시간으로 검색이 완료되는 것을 볼 수 있다.

 

(2)인덱스가 설정되지 않은 컬럼으로 검색 할 경우

select * from employees where first_name="Nishit" and last_name="Asser" LIMIT 0, 500	
1 row(s) returned	0.110 sec / 0.000 sec

인덱스로 설정되지 않은 first_name과 last_name으로 검색시 매우 많은 시간이 걸린다.

 

(3)first_name,last_name 인덱스 설정후 검색

1.인덱스 추가

CREATE INDEX 인덱스명 ON 테이블명(컬럼명)

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

CREATE UNIQUE INDEX 인덱스명 ON 테이블명(컬럼명)

create index employees_index on employees(first_name,last_name);
select * from employees where first_name="Nishit" and last_name="Asser" LIMIT 0, 500	
1 row(s) returned	0.000 sec / 0.000 sec

first_name과 last_name을 인덱스로 설정 후  검색하는 시간이 매우 많이 줄었다.

 

2.인덱스 확인

SHOW INDEX FROM 테이블명

show index from employees;

 

3. 인덱스 삭제

ALTER TABLE 테이블명 DROP INDEX 인덱스명

alter table employees drop index employees_index

 

728x90