행이 15만개 정도 되는 테이블에서 CHAR 타입으로 지정된 컬럼에 대해서 검색을 하는데 쿼리가 너무 느려서 사용한 방법입니다.
.....
16 rows in set (1.95 sec)
적용전에는 2초 가량 걸렸습니다.
.....
16 rows in set (0.00 sec)
인덱스를 적용하니 거의 시간이 안 걸렸습니다.
인덱스에는 두가지가 있습니다.
1. 일반 인덱스 (Index)
- 일반 인덱스는 데이터 검색 속도를 높이기 위해 사용되며, 값의 중복을 허용합니다.
- 예를 들어, 동일한 이름을 가진 여러 사용자가 있을 수 있으므로 이름 컬럼에 일반 인덱스를 추가할 수 있습니다.
CREATE INDEX index_name ON table_name(column_name);
2. 유니크 인덱스 (Unique Index)
- 유니크 인덱스는 인덱스 컬럼의 값이 고유해야 할 때 사용됩니다.
- 예를 들어, 사용자 테이블의 email 컬럼은 유니크 인덱스로 설정하여 중복된 이메일을 방지할 수 있습니다.
CREATE UNIQUE INDEX index_name ON table_name(column_name);
저는 중복된 값을 허용하는 일반 인덱스를 사용했습니다.
MySQL에서는 대부분의 데이터 타입에 인덱스를 설정할 수 있습니다.
다만 TEXT나 BLOB 같은 긴 문자열 타입은 부분 인덱스를 지정하는 것이 좋습니다.
Index 를 지정하면 쓰기 성능이 저하되기 때문에 쓰기가 많은 경우 신중하게 사용해야 합니다.
생성된 인덱스를 보려면 SHOW INDEX를 하면 됩니다.
SHOW INDEX FROM table_name;
인덱스를 삭제 하려면 DROP INDEX를 하시면 됩니다.
DROP INDEX index_name ON table_name;