2011-02-24 9 views
0

私のテーブルxm_cは次のように作成されていない:
選択:MySQLのフルテキストインデックスは、AGAINST 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;

FULLTEXTインデックスは以下のクエリで使用されていません* xm_cからどこのラベル= 'TomCruise';

場所、それがここで使用される:
選択* xm_cからどこ( 'トム・クルーズ')との試合(ラベル)。


 
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

関連する問題