2011-02-24 2 views
0

내 테이블 xm_c는 다음과 같이 생성하지 :
선택 :MySQL의 전체 텍스트 인덱스는 반대 MATCH() 사용되지만를 위해 =

 
CREATE TABLE `xm_c` ( 
    `category_id` char(16) NOT NULL default '', 
    `label` char(64) NOT NULL default '', 
    `flags` smallint(5) unsigned default NULL, 
    `d0` date default NULL, 
    `d1` date default NULL, 
    `ct` int(6) unsigned default NULL, 
    `t_update` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, 
    PRIMARY KEY (`category_id`), 
    **FULLTEXT KEY `label` (`label`)** 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 DELAY_KEY_WRITE=1;

전체 텍스트 인덱스는 아래 쿼리에 사용되지 않습니다 * xm_c에서 어디 레이블 = 'TomCruise';

곳이 여기에 사용 된 바와 같이 :
선택 * xm_c 곳에서 ('톰 크루즈') AGAINST MATCH (라벨);


 
mysql> explain select * from xm_c where MATCH(label) AGAINST('TomCruise'); 

> 
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra 
**1 | SIMPLE  | xm_c | fulltext | label  | label | 0  |  | 1 | Using where** 




mysql> explain select * from xm_c where label = 'TomCruise'; 

> id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra 
**1 | SIMPLE  | xm_c | ALL | label   | NULL | NULL | NULL | 5673360 | Using where** 



사람이 설명 할 수 ? 두 검색어 모두에서 INDEX를 사용해야합니까?
FULLTEXT INDICES 사용시 구문 제약 조건이 있습니까?

답변

1

전체 텍스트 색인은 MATCH() ... AGAINST 작업에서만 사용할 수 있습니다. = 연산자는 매우 다르며 fts와는 아무런 관련이 없습니다.이 인덱스 유형을 사용할 수 없습니다. fts에 대한 자세한 내용은 manual에서 확인할 수 있습니다.

말은 말발굽을 사용하고, 자동차는 타이어를 사용합니다. 그리고 둘 다 A에서 B로 당신을 데려 올 수 있습니다.

+0

해답을 가져 주셔서 감사합니다. 내가 이해하는 한, 빠른 검색을 위해 열 또는 열 그룹에 대한 인덱스가 만들어집니다. 따라서 해당 열과 관련된 모든 검색에 해당 열의 색인을 사용하면 안됩니까? – raghu

관련 문제