mySQL - LIKE "%and%" 와 "and%" 쿼리 실행 속도 차이

cheongyeong·2023년 10월 5일
post-thumbnail

인덱스를 활용하여 LIKE "%and%" 와 "and%" 쿼리를 실행했을 때 쿼리 실행 속도에서 차이가 난다.

LIKE "and%" 쿼리는

"and" 로 시작하는 값들을 검색하는데 인덱스는 데이터를 순서대로 저장하므로 "and" 로 시작하는 값이 연속적으로 저장되어 있기 때문에 인덱스를 활용하여 효율적으로 검색이 가능하다.


LIKE "%and%" 쿼리는

어디에서나 "and" 문자가 포함되는 값들을 검색하는데 인덱스 값들은 정렬된 순서대로 저장이 되어있기 때문에 '%and' 또는 '%and%' 처럼 붙어 있다면 인덱스의 순차탐색이 불가능하다. 따라서 인덱스를 사용하여 "and" 가 포함되어 있는 값을 찾으려면 더 복잡해지며, 전체 인덱스를 스캔하게 되어 성능이 떨어진다.

LIKE "%and%" 쿼리 실행 속도 향상

성능이 떨어지지 않게 문자가 포함 되어있는 데이터 값을 찾고 싶다면, 아래와 같은 방법을 사용할 수 있다.

Full-Text 인덱스 사용

텍스트 데이터를 효율적으로 검색하기 위한 데이터베이스 인덱스 유형이다. 인덱스와 다르게 Full-Text 인덱스는 긴 문장을 대상으로 인덱싱을 하며, Full-Text 인덱스를 생성할 열은 TEXT 또는 VARCHAR와 같은 문자열 데이터 형식이어야 한다.

또한, 일반 인덱스보다 크기가 커서 인덱스 크기를 효과적으로 관리해야 한다. 인덱스의 크기가 불필요하게 클 수 있으므로 적절한 인덱스 길이를 설정해줘야 한다.

전문 검색 엔진 사용

대용량 텍스트 데이터에 대한 검색 기능이 필요할 때 Elastic Search 같은 검색 엔진을 사용할 수 있다.

Elastic Search는 아파치 재단의 루씬을 기반으로 개발된 오프소스 검색 엔진으로 많은 양의 데이터를 신속하게 저장, 검색, 분석할 수 있다.

profile
👩‍💻💡

0개의 댓글