

인덱스를 활용하여 LIKE "%and%" 와 "and%" 쿼리를 실행했을 때 쿼리 실행 속도에서 차이가 난다.
LIKE "and%" 쿼리는
"and" 로 시작하는 값들을 검색하는데 인덱스는 데이터를 순서대로 저장하므로 "and" 로 시작하는 값이 연속적으로 저장되어 있기 때문에 인덱스를 활용하여 효율적으로 검색이 가능하다.
LIKE "%and%" 쿼리는
어디에서나 "and" 문자가 포함되는 값들을 검색하는데 인덱스 값들은 정렬된 순서대로 저장이 되어있기 때문에 '%and' 또는 '%and%' 처럼 붙어 있다면 인덱스의 순차탐색이 불가능하다. 따라서 인덱스를 사용하여 "and" 가 포함되어 있는 값을 찾으려면 더 복잡해지며, 전체 인덱스를 스캔하게 되어 성능이 떨어진다.
성능이 떨어지지 않게 문자가 포함 되어있는 데이터 값을 찾고 싶다면, 아래와 같은 방법을 사용할 수 있다.
Full-Text 인덱스 사용
텍스트 데이터를 효율적으로 검색하기 위한 데이터베이스 인덱스 유형이다. 인덱스와 다르게 Full-Text 인덱스는 긴 문장을 대상으로 인덱싱을 하며, Full-Text 인덱스를 생성할 열은 TEXT 또는 VARCHAR와 같은 문자열 데이터 형식이어야 한다.
또한, 일반 인덱스보다 크기가 커서 인덱스 크기를 효과적으로 관리해야 한다. 인덱스의 크기가 불필요하게 클 수 있으므로 적절한 인덱스 길이를 설정해줘야 한다.
전문 검색 엔진 사용
대용량 텍스트 데이터에 대한 검색 기능이 필요할 때 Elastic Search 같은 검색 엔진을 사용할 수 있다.
Elastic Search는 아파치 재단의 루씬을 기반으로 개발된 오프소스 검색 엔진으로 많은 양의 데이터를 신속하게 저장, 검색, 분석할 수 있다.