Fulltext index란?
Maridadb는 % 연산자를 사용하여 LIKE 패턴 연산을 지원할 뿐만 아니라,
단어 또는 구문에 대한 검색을 지원하며 이를 풀 텍스트(FULLTEXT) 검색이라고 부른다.

LIKE%으로 검색을 하면 데이터가 늘어날수록 개개의 글자를 일일히 대조해야 하기 때문에
검색속도가 느려지는 단점이 있습니다.
하지만 fulltext index는 긴 문장 전체를 대상으로 인덱싱을 하여 속도가 빠릅니다.
다만 InnoDB와 MyISAM 테이블만 지원하며, char, varchar, text타입 문자만 지원한다.
Fulltext index 만들기
MariaDB에서 아래의 명령어로 Fulltext INDEX를 만들수 있는데요.
ALTER TABLE 테이블명
ADD FULLTEXT INDEX 인덱스명 (대상컬럼명) VISIBLE;
그리고 FULLTEXT index가 만들어졌는지 확인하는 방법은
show index 명령어로 확인이 가능합니다.
끝에 Fulltext로 인덱스가 작성된 것을 알수 있습니다.
show index from 테이블명;

기존에 찾기 위해서는 LIKE함수를 활용하였는데요.
select s_title from study_stat2 where s_title like '%검색어%';
SELECT * FROM study_stat2
WHERE MATCH(s_title) AGAINST('"검색어"');
LIKE 함수로 실행

FULLTEXT INDEX로 실행

거의 100배의 가까운 성능차이가 난다.
그리고 이 Fulltext INDEX에 대해서 잘 정리해논 사이트가 있어서 첨부합니다.
https://annajin.tistory.com/218
[TIL] 07/25 항해99 78일차 - MySQL 검색기능 : FullText Search
들어가며 프로젝트에 음식점 검색 기능을 구현해야했다. 초반에는 Elasticsearch를 이용해서 구현을 해보려고 목표를 잡아두었었는데, Elasticsearch의 러닝커브가 높고 리소스도 많이 드는 기술이기
annajin.tistory.com
사이트의 게시글이 커져서 검색이 잘 안될때는 Fulltext Index를 고려해볼 수 있습니다.
'Programming > SQLD' 카테고리의 다른 글
SQLD 공부하기 - NULL 관련함수 (0) | 2022.10.23 |
---|---|
SQLD 자격증 취득 - 시험 등록하기 (0) | 2022.10.22 |
정규화와 성능 (2) | 2022.09.26 |
SQL 명령어 종류 - DDL/DML/DCL/TCL (0) | 2022.09.18 |
데이터 모델링의 이해 (0) | 2022.09.09 |