mysql全文索引用于MATCH(),但不适用于=
我的表xm_c是这样创建的:
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;
  下面的查询中不使用FULLTEXT索引: 
  select * from xm_c where label ='TomCruise'; 
  因为它在这里使用: 
  select * from xm_c where MATCH(label)AGAINST('TomCruise'); 
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时是否有语法限制? 
  全文索引只能用于MATCH() ... AGAINST操作。  一个=运算符是非常不同的,与fts无关,它只是不能使用这种类型的索引。  关于fts的更多信息可以在手册中找到。 
一匹马使用马蹄铁,一辆汽车使用轮胎。 两者都可以将你从A带到B
链接地址: http://www.djcxy.com/p/25077.html上一篇: mysql fulltext index is used for MATCH() AGAINST but not for =
