일하면서 쿼리를 짜다 = 검색을 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 구조
빨리 자료구조 수업을 들어야겠다..
'개발 한 스푼 > MySQL' 카테고리의 다른 글
you do not have the SUPER privilege (Error Code: 1419) (0) | 2023.09.20 |
---|---|
NOW()와 SYSDATE()의 차이 (0) | 2023.09.05 |
계층형 쿼리 (0) | 2023.08.17 |
[MySQL] YEAR_MONTH() 현재 연도, 월 알아내기 (0) | 2023.07.17 |
[MySQL] id컬럼 데이터타입 - int? Bigint? (0) | 2022.12.24 |