MySQL 문법 - 7 (INDEX)
INDEX
만든 테이블에서 빠르게 원하는 데이터를 검색을 하기 위해서 사용한다.
일반적으로는 데이터를 검색할 때 순서대로 테이블 전체를 검색하므로 시간이 오래 걸린다.
인덱스를 이용하면 검색 / 질의 시 전체를 읽는 것이 아니기 때문에 시간이 단축된다.
테이블 수정 시 인덱스도 변화시켜주어야 하므로 번거롭다. 그러므로 수정보다는 검색이 자주 일어나는 테이블에서 인덱스를 이용하는 것이 좋다.
성능 문제가 발생할 때 마다 인덱스를 추가시켜주면 개별 성능은 빨라질 지 몰라도 전체 성능은 떨어지는 문제를 초래할 수 있다고 한다.
인덱스를 만드는 방법은 CREATE INDEX [인덱스명] ON [테이블명] (column 이름) 이고 중복을 허용하지 않는 인덱스를 만드는 방법은 CREATE UNIQUE INDEX [인덱스명] ON [테이블명] (column 이름)이다.
SHOW INDEX FROM [테이블명] 을 통해 실행시켰을 떄 Non_unique가 위의 인덱스를 만들 때 중복 허용 여부이다.
왜 Unique가 아니라 Non_unique라고 했는지는 모르겠다. 더 보기 힘든 것 같은데..
FULLTEXT INDEX
일반적인 인덱스와는 달리 매우 빠르게 모든 텍스트 column을 검색하는데 이용한다고 한다.
일반적인 인덱스는 Index_type이 BTree형태라고 한다. FULLTEXT는 Index_type가 FULLTEXT이다.
작동 방식에 대해 궁금하여 검색하여 찾아보았더니 아래 블로그에 상세히 잘 설명되어 있었다.
https://interconnection.tistory.com/95
생성은 CREATE FULLTEXT INDEX [인덱스명] 으로 생성한다.
마찬가지로 SHOW를 통해 보면 Index_Type이 다른 것을 확인할 수 있다.
DROP INDEX
ALTER 문을 이용해 DROP 시킬 수 있다.
ALTER TABLE [테이블명] DROP INDEX [삭제할 인덱스명] 으로 간단하게 지울 수 있다.
혹은 DROP INDEX [삭제할 인덱스명] ON [테이블명] 으로 지울 수 있다.