일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- arm-linux-androideabi
- useGeneratedKeys
- ndk 오류
- centos java
- adjustNothig
- /usr/lib/jvm
- centos 환경변수
- 자바 버전 확인
- 인덱스 여러개
- 10진수
- 변환기
- gitignore not working
- centos java_home
- 키보드 사라짐
- 웹뷰 디버깅
- return 1
- MySQL
- 안드로이드
- 웹뷰 원격
- gitignore 오류
- 리눅스
- event scheduler
- 광고
- web view
- chrome://inspect
- centos jre_home
- 이벤트 스케쥴러
- jdk 상세버전 확인
- sh shutdown.sh 오류
- foreign_key
- Today
- Total
개발자가 되고 싶은 1人
mysql 원하는 인덱스 사용하기 본문
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';
'프로그래밍 > Database' 카테고리의 다른 글
mysql event schedule (0) | 2021.12.20 |
---|---|
mysql Database 및 Table dump, 복원 (0) | 2021.11.11 |
mysql 외래키 무시하고 데이터 삭제하기 (0) | 2021.06.18 |
mysql 모니터링 (0) | 2020.12.13 |
윈도우에서 mariadb 서비스 종료 및 시작 (0) | 2020.06.05 |