CREATE [UNIQUE] INDEX 인덱스_이름
ON 테이블_이름 (열_이름) [ASC | DESC]
인덱스 생성 이전
Index_length가 0이 나옴
CREATE INDEX idx_member_addr
ON member(addr);
생성 확인
전체 인덱스 크기 확인
실제로 적용시키려면 ANALYZE TABLE 사용
ANALYZE TABLE member;
CREATE UNIQUE INDEX idx_member_mem_name
ON member(mem_name);
고유 인덱스 생성하면 이후로는 중복된 값이 입력되지 않는다.
중복된 데이터가 많은 열에 인덱스를 생성하는 것은 의미도 없고 오히려 성능에 나쁜 영향을 미친다.
ANALYZE TABLE member;
SHOW INDEX FROM member;
인덱스를 사용하려면 인덱스가 생성된 열 이름이 WHERE문에 있어야 함
SELECT mem_id, mem_name, addr
FROM member
WHERE mem_name = '에이핑크';
WHERE에서 열에 연산이 가해지면 인덱스를 사용하지 않는다.
DROP INDEX 인덱스_이름 ON 테이블_이름
DROP INDEX idx_member_mem_name ON member;
DROP INDEX idx_member_addr ON member;
DROP INDEX idx_member_mem_number ON member;
보조 인덱스를 먼저 제거하는 것이 좋다.
클러스터형 인덱스를 먼저 제거하면 데이터를 쓸데없이 재구성해서 시간이 더 오래 걸림
SELECT TABLE_NAME, CONSTRAINT_NAME
FROM information_schema.referential_constraints
WHERE CONSTRAINT_SCHEMA = 'market_db';
인덱스는 열 단위에 생성된다.
WHERE 절에서 사용되는 열에 인덱스를 만들어야 한다.
WHERE 절에 사용되더라도 자주 사용해야 가치가 있다.
데이터의 중복이 높은 열은 인덱스를 만들어도 별 효과가 없다.
클러스터형 인덱스는 테이블당 하나만 생성할 수 있다.
사용하지 않는 인덱스는 제거하자.