보통 MySQL에서 FullText에 대해서 단어를 검색할 때 LIKE "%words%"를 주로 사용하기 마련이다.
하지만 이는 대용량 데이터에서 검색할 때는 느린 쿼리 결과를 보여준다.
먼저 FullText에 인덱싱을 걸어주자~!
CREATE FULLTEXT INDEX idx_1 ON my_search (text_data);
FullText에 대해서 빠르게 검색할 수 있는 방법이 있으니 MATCH, AGAINST 문법을 사용하면 된다.
FullText Indexing을 사용하는 방법으로 사용방법은
1. 기본적으로 words 에 대해 검색하고자 할 때
2. words1과 words2를 포함한 것을 찾고자 할 때(이 때는 뒤에 IN BOOLEAN MODE라고 작성해 주어야 한다.)
3. word1과 words2는 포함하고, words3는 포함하지 않는 것을 찾고자 할 때
참고문헌
http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html
하지만 이는 대용량 데이터에서 검색할 때는 느린 쿼리 결과를 보여준다.
먼저 FullText에 인덱싱을 걸어주자~!
CREATE FULLTEXT INDEX idx_1 ON my_search (text_data);
FullText에 대해서 빠르게 검색할 수 있는 방법이 있으니 MATCH, AGAINST 문법을 사용하면 된다.
FullText Indexing을 사용하는 방법으로 사용방법은
1. 기본적으로 words 에 대해 검색하고자 할 때
1 |
select * from table_name where MATCH(column_name) AGAINST( "words" ) |
2. words1과 words2를 포함한 것을 찾고자 할 때(이 때는 뒤에 IN BOOLEAN MODE라고 작성해 주어야 한다.)
1 |
select * from table_name where MATCH(column_name) |
2 |
AGAINST( '+"words1" +"words2"' IN BOOLEAN MODE) |
3. word1과 words2는 포함하고, words3는 포함하지 않는 것을 찾고자 할 때
1 |
select * from table_name where MATCH(column_name) |
2 |
AGAINST( '+"words1" +"words2" -"words3"' IN BOOLEAN MODE) |
참고문헌
http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html
'MySQL' 카테고리의 다른 글
MySQL IFNULL (0) | 2012.12.03 |
---|---|
테이블 내 특정 문자열 한꺼번에 바꾸기 - REPLACE (0) | 2012.08.30 |
SQL 인젝션 공격 방어 (0) | 2012.07.31 |
SQL injection, SQL 주입 공격, SQL 주입 취약점 (0) | 2012.07.31 |
mysql 정리 (0) | 2012.01.06 |