- 테이블의 열(컬럼)에 대한 검색 성능을 향상시키기 위해 사용되는 데이터 구조
- 인덱스는 테이블의 기본 키
PRIMARY KEY
나 고유한UNIQUE
한 값을 가지는 열에 대해서 생성된다.검색
성능을 향상시키는 반면,삽입
,수정
,삭제
작업의 성능을 떨어뜨리는 단점도 있다.
SQL
에서 특정 쿼리의 실행 계획을 볼 수 있는 명령어SELECT
문과 함께 실행하면 데이터베이스 엔진이 요청한 데이터를 검색하는 방법에 대한 쿼리 실행 계획을 생성CREATE TABLE `animal`( `id` INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL ); . INSERT INTO `animal` SET `name` = '기린'; . INSERT INTO `animal` SET `name` = '사자'; . EXPLAIN SELECT * FROM `animal`; # 실행결과
- MySQL에서 쿼리 캐시를 사용하지 않도록 지정하는 옵션
SQL_NO_CACHE
를 사용하면 해당 쿼리를 실행할 때 캐시를 사용하지 않도록 강제할 수 있다.- 따라서 매번 새로운 결과를 반환하여 쿼리 실행 시간을 예측 가능
# 쿼리 결과가 캐시 O SELECT * FROM `animal` WHERE `name` = '기린'; . # 쿼리 결과가 캐시 X SELECT SQL_NO_CACHE * FROM `animal` WHERE `name` = '기린';
# SET `name` = 'kimjuntae'라고 저장하면 'kimjuntae '로 저장
# 공백을 채운 15자리 문자열로 저장
`name` CHAR(15)
CHAR
보다 약간 느릴 수도 있다.# SET `name` = 'kimjuntae'라고 저장하면 'kimjuntae'로 저장
# 15자리로 지정했지만, 9자리 문자열로 저장
`name` VARCHAR(15)
행을 선택적으로 삭제하거나 롤백이 필요하면 DELETE
를 사용하고, 모든 데이터를 삭제하고 테이블 크기를 초기화해야하는 경우 TRUNCATE
를 사용하는 것이 좋다.
WHERE
절을 사용할 수 있다.WHERE
절을 사용할 수 없다.