보통 쿼리로 검색을 할 때 아래와 같이 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 ]
'웹 프로그래밍 > MYSQL' 카테고리의 다른 글
테이블 칼럼 구조 확인 (0) | 2017.04.12 |
---|---|
테이블 만들기, 보기 (0) | 2017.04.12 |
데이터베이스 character set 변경 (0) | 2017.04.11 |
데이터베이스 생성 삭제 (0) | 2017.04.11 |
mysql 계정 추가 삭제 (0) | 2017.04.11 |