웹 프로그래밍/MYSQL

MySQL FullText 검색

웹 개발자의 비상 2013. 11. 4. 10:57

보통 쿼리로 검색을 할 때 아래와 같이 LIKE검색을 하게 된다.

SELECT * FROM test WHERE name LIKE '%search%';

그런데, LIKE 자체가 LIKE '%search%'처럼, 왼쪽에도 %를 걸면 인덱스를 타지 않아 속도가 느리다.
더욱이 테이블의 용량이 대용량으로 갈수록 더더욱 느린 결과를 나타낼 수 밖에 없다.
그래서, 여느 DBMS와 마찬가지로 MySQL도 FULLTEXT검색을 지원한다.

- MyISAM엔진에서 지원
- CHAR, VARCHAR, TEXT 타입에서 지원


1. FULLTEXT INDEX 생성

CREATE FULLTEXT INDEX idx_ft_name ON test (name);

만약 MyISAM엔진이 아니라면, FULLTEXT INDEX를 지원하지 않은 engine type이라고 에러가 난다.


2. FULLTEXT 쿼리

SELECT * FROM test WHERE MATCH(name) AGAINST("tiger");
SELECT * FROM test WHERE name LIKE '%tiger%';

SELECT * FROM test WHERE MATCH(name) AGAINST(' + "tiger" + "lion"' IN BOOLEAN MODE);
SELECT * FROM test WHERE name LIKE '%tiger%' OR name LIKE '%lion%';

SELECT * FROM test WHERE MATCH(name) AGAINST(' + "tiger" + "lion" - "leopard"' IN BOOLEAN MODE);
SELECT * FROM test WHERE (name LIKE '%tiger%' OR name LIKE '%lion%') AND name NOT LIKE '%leopard%';

[출처 : http://valley.egloos.com/viewer/?url=http://tiger5net.egloos.com/5776768 ]

728x90

'웹 프로그래밍 > MYSQL' 카테고리의 다른 글

테이블 칼럼 구조 확인  (0) 2017.04.12
테이블 만들기, 보기  (0) 2017.04.12
데이터베이스 character set 변경  (0) 2017.04.11
데이터베이스 생성 삭제  (0) 2017.04.11
mysql 계정 추가 삭제  (0) 2017.04.11