개발자가 되고 싶은 1人

mysql 원하는 인덱스 사용하기 본문

프로그래밍/Database

mysql 원하는 인덱스 사용하기

인생을 노트하자 2020. 12. 20. 17:13

mysql에서 데이터가 별로 없을 경우에는 인덱스가 필요 없을 정도로 늦은 속도의 쿼리를 체감하지 못하지만

데이터량이 점점 많아질수록 인덱스를 사용함으로써 쿼리 속도를 개선할 수 있다.

 

 

CREATE TABLE `test_db`.`student_test`
(
    SEQ   int NOT NULL AUTO_INCREMENT COMMENT '시퀀스',
    name  varchar(20)       CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '이름',
    grade int(11)           NOT NULL COMMENT '학년',
    group int(11) NOT NULL COMMENT '반',
    age   int(11)           NOT NULL COMMENT '나이',
    `ECG1`         float             COMMENT '심전도 1',
    `ECG2`         float             COMMENT '심전도 2',
    PRIMARY KEY (`SEQ`),
    INDEX `index_grade` (`grade`),
    INDEX `index_grade_group` (`grade`, `group`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=Dynamic AUTO_INCREMENT=1;

 

위와 같이 인덱스가 2개 이상 일 경우 쿼리에서 원하는 인덱스를 사용할 수 있다.

 

 

 

아래 그림은 실행계획을 돌려보니 2개의 인덱스가 있고 아무런 세팅을 하지 않는 경우 index_*** 의 인덱스를 타고 있는 상황이다.

 

 

 

 

1) SELECT *

        FROM student_test use index (index_grade)

      where grade = '3';

 

2) SELECT *

        FROM student_test use index (index_grade_group)

      where grade = '3' 

      and group = '12';

 

 

 

Comments