-- index 확인
SHOW INDEX FROM 테이블명;
-- index 생성
CREATE INDEX 인덱스명 ON 테이블명(컬럼명);
ALTER TABLE 테이블명 ADD INDEX 인덱스명(컬럼명);
-- index 삭제(수정은 삭제->생성으로 해야함)
ALTER TABLE 테이블명 DROP INDEX 인덱스명;
EXPLAIN
SELECT * FROM CUSTOMER WHERE TEL = '01000000000';
index가 여러개 존재 할 경우, possible_keys 필드에 여러개가 나열될 것이고 실제로 사용된 index는 key필드의 값으로 나타난다.
이때, 여러개의 index 중 사용되는 index는 DB의 optimizer가 알아서 적절하게 선택한다.
※ MySQL에서는 index없는 unique를 생성 할 수 없다.
즉, unique를 부여하면 index가 생성된다.
필드 하나에 unique속성을 추가하면 자동으로 UNIQUE INDEX 추가.
- table에 데이터가 변경될 때마다 index도 변경 발생(b-tree 구조변경)
- 추가적인 저장공간 차지(인덱스 마다 별도의 저장공간을 가지고 있다)
- 조회하려는 필드(attribute)를 index가 모두 포함하는 경우.
ex) CUSTOMER이라는 테이블에 INDEX(name, tel) 이와 같이 두개의 필드에 대해 인덱스가 걸려있는 경우 아래와 같은 쿼리를 실행하면 조회 성능이 더 좋다.
SELECT NAME, TEL FROM CUSTOMER
WHERE NAME = '홍길동';
집계함수 안에서 조건 부여 (0) | 2022.08.31 |
---|---|
MySQL auto_increment 값 변경 (0) | 2022.01.11 |
EXISTS, NOT EXISTS 사용 (0) | 2021.11.22 |
[MyBatis] MySQL의 DUPLICATE (0) | 2021.10.27 |
오라클 Keep 함수 (0) | 2021.07.11 |