개발 한 스푼/MySQL

LIKE% 위치에 따른 인덱스 사용 여부

idleday 2023. 7. 11. 18:23

일하면서 쿼리를 짜다 = 검색을 LIKE로 바꾸니 그렇게 바꾸면 "어드민페이지는 검색어를 모두 넣어 제대로 검색하는게 맞고, 또한 검색시 인덱스 타기도 어렵다"는 말을 들었다.

 

인덱스는 잘 모르니까 찾아보니 아래 티스토리글이 매우 유익하게 설명하고 있었다.

 

MySQL LIKE % 위치에 따른 인덱스 사용 여부

서론 Table 내 어떠한 칼럼에 index를 설정하여 Like 문을 통해 검색하는 경우 INDEX 설정을 하였어도 % 위치에 따라 INDEX 가 정상적으로 작동하는 경우가 있지만 반대로 잘못 사용한 경우 Full Scan 이 발

k3068.tistory.com

MySQL에서 문자열 검색시 'AB%' 를 제외한 나머지 방식(%AB, %AB%)은 인덱스를 타지 않을까?

데이터베이스 인덱스의 자료구조는 대부분 B-TREE 구조로 이루어져 있다.
(B-TREE은 노드의 자식 노드의 데이터들은 노드 데이터 기준으로 데이터보다 작은 값이 왼쪽부터 오른쪽으로 정렬되어 있다.)

% ABC%, % ABC 검색은 FullText Search 전문검색(MySQL 5.7 버전 이상)을 사용하면 빠른 검색이 가능하다.

참고자료
 

MySQL FullText Search 전문검색 기능 (1) - 인덱싱 방식 - 빌트인 전문 검색 - Stopword

 

hoing.io

 

How to speed up SELECT .. LIKE queries in MySQL on multiple columns?

I have a MySQL table for which I do very frequent SELECT x, y, z FROM table WHERE x LIKE '%text%' OR y LIKE '%text%' OR z LIKE '%text%' queries. Would any kind of index help speed things up? There...

stackoverflow.com

 


 

새로 배워야할 것: 

 

B-TREE 구조

 

빨리 자료구조 수업을 들어야겠다..