MYSQL Index 설정 후 테이블 조회 성능 향상 확인 테스트

1. MYSQL Index 설정 후 테이블 조회 성능이 향상 되었는지 확인하기 위해서는 데이터 베이스에 많은 양의 데이터가 들어가 있어야 한다고 생각했다. mysql 프로시저로 while문 작성하여 실행.

= post테이블 title컬럼에 hello1부터 시작해서 hello1000000(백만)까지 데이터 삽입

DELIMITER //
CREATE PROCEDURE getwhile()
BEGIN
DECLARE counter INT DEFAULT 1;
WHILE counter <= 1000000 DO
-- while 문으로 counter 올리기
insert into post(title) values(concat("hello",counter));

-- 반복할 작업 = post테이블 title 컬럼에 hello를 counter번호에 맞게 추가 ex.) hello1~hello1000000
SET counter = counter + 1;

-- 종료 조건 = while 문으로 counter 올리기
END WHILE;

END //
DELIMITER ;

 

2. 데이터 삽입 후 post테이블 title컬럼에 데이터가 정상적으로 들어갔는지 title컬럼을 count하여 총 데이터 갯수 확인

= 1000007개 데이터 정상 삽입 확인

select count(title) from post;

 

3. post 테이블 데이터 오름차순 조회 시 1.859초 소요확인

select * from post order by id;

 

4. post 테이블 데이터 내림차순 조회 시 2.828초 소요확인

select * from post order by id desc;

 

5. post테이블 id = 900000번 조회(PRIMARY KEY 설정 되어있어서 속도 엄청 빠름)

select id from post where id = 900000;

 

6. post테이블 title = 'hello900000' 조회(0.5초)

select title from post where title = 'hello900000';

 

7. post_title index 설정 전

show index from post;

 

8. post테이블 title 컬럼 인덱스 생성(2.9초 소요)

CREATE INDEX post_title ON post(title);

 

9. post_title index 설정 후

show index from post;

 

10. post_title index 설정 후 post 테이블 title='hello900000'조회(10번의 시도 중 최대 조회 시간 0.016초)

select title from post where title = 'hello900000';

 

11. index 설정 후 post 테이블 전체조회

select * from post order by id asc;

 

6번. post테이블 title = 'hello900000' 조회시간은 0.5초가 걸렸던 반면, 10번. post_title index 설정 후 post 테이블 title='hello900000'조회시간은 10번의 시도 중 9번은 0.000초가 걸렸고 나머지 1번은 0.016초가 걸렸다.

index설정 후 데이터 조회시간을 0.016초하였을 때 조회시간 차이로만 보면 30배이상 조회속도가 상승했다.

 

다른컬럼없이 하나의 컬럼(title)에만 데이터를 삽입해서 테스트했는데, 다른컬럼들에도 백만개씩의 데이터들이 들어있었다면 index설정 후 조회시간 차이가 이번 테스트만큼은 나지 않을거라고 생각한다.

 

데이터베이스 index 설정 전과 설정 이후 데이터 조회시간이 확연하게 차이가 난것을 확인할 수 있었다.