-
[About _ MySQL _ INDEX]About_Datascience/SQL 2023. 2. 3. 10:46
INDEX 는 검색 속도가(READ) 빨라지게 하기 위해 사용된다. 그러나 저장공간을 10% 정도 더 차지하고
INSERT , DELETE , UPDATE 를 할 때 속도가 느려지기 때문에 필요한 상황에 맞게 사용하는 것이 중요할 것 같다.
INDEX는 테이블의 컬럼 단위로 설정 가능하고 INDEX에는 두 가지 종류가 있다.
첫 번째로 클러스터형 인덱스는 검색 속도에 큰 영향을 주지 않기 때문에 검색 속도에는 큰 의미가 없지만데이터 정렬해주는 기능을 갖고 있다.
두 번째로 보조 인덱스 (secondary) 가 있는데 보조 인덱스가 우리가 생각하는 검색 속도 향상에 영향을 주는 인덱스이다.
<employees dataset>
# index 출력 SHOW INDEX FROM salaries;
employees의 index 출력 결과 INDEX의 주 기능인 검색 속도 향상을 확인해보기 위해 INDEX 없이 쿼리를 실행해 보고 ,
INDEX 설정 후 쿼리를 실행해 본 후 속도를 비교해보도록 해보자 !
1. INDEX 없이 쿼리 실행
# 인덱스 없이 쿼리 실행 (0.901sec) SELECT * FROM salaries WHERE to_date < '1986-01-01';
MySQL 창 아래 Action Output 탭의 Duration / Fetch Time 을 보면 쿼리 없이 실행 했을 때 0.901 sec 이
걸린 것을 확인할 수 있었다.
그렇다면 이제 인덱스를 설정해보고 다시 쿼리를 실행해보자.
<인덱스 설정>
# 인덱스 설정 6339개 나옴 (280만개중에) CREATE INDEX tdate ON salaries (to_date);
인덱스를 설정해면 총 데이터인 280만개 중, 6339 개가 나온다 .
2. INDEX 설정 후 쿼리 실행
# 인덱스 설정 후 속도 확인 (0.036sec) 2~30배 빨라짐. SELECT * FROM salaries WHERE to_date < '1986-01-01';
0.036sec 로 INDEX 설정 전보다 2~30배가 빨라진 것을 확인할 수 있었다.
이는 나중에 데이터 개수가 기하급수적으로 많아지면 더 확연한 차이를 느낄 수 있을 것 같다.
'About_Datascience > SQL' 카테고리의 다른 글
[About _ MySQL _ Sub Query] (0) 2023.02.02 [About _ MySQL _ join] (0) 2023.02.01 [About_MySQL _ group by 와 having] (0) 2023.02.01 [About_MySQL _ 함수 , 조건절] (0) 2023.01.31 [About_MySQL 기본문법(2)_DML의 CRUD] (0) 2023.01.31