SELECT * FROM data_content_193 LEFT JOIN data_content_41 ON (data_content_193.编号 = data_content_41.代号) WHERE MATCH (data_content_193.姓名, data_content_193.学校名称, data_content_193.职务, data_content_193.住址, data_content_41.公司地址) AGAINST ('+"北京" +"王"' IN BOOLEAN MODE);
以上sql使用了联表查询,并希望使用全文索引提高搜索速度,为此,我已经分别在两个表中建立了以下两个全文索引
create fulltext index search_index_fulltext6 on data_content_193(姓名,学校名称,职务,住址) with parser ngram;
create fulltext index search_index_fulltext7 on data_content_41(公司地址) with parser ngram;
但是通过EXPLAIN发现,该sql并没有走任何一个全文索引,如何做才可以让该sql的联表查询走全文索引呢?
mysql> EXPLAIN SELECT * FROM data_content_193 LEFT JOIN data_content_41 ON (data_content_193.编号 = data_content_41.代号) WHERE MATCH (data_content_193.姓名, data_content_193.学校名称, data_content_193.职务, data_content_193.住址, data_content_41.公司地址) AGAINST ('+"北京" +"王"' IN BOOLEAN MODE);
+----+-------------+------------------+------------+------+---------------------------------+---------------------------------+---------+-----------------------------+--------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+------------------+------------+------+---------------------------------+---------------------------------+---------+-----------------------------+--------+----------+-------------+
| 1 | SIMPLE | data_content_193 | NULL | ALL | NULL | NULL | NULL | NULL | 544460 | 100.00 | NULL |
| 1 | SIMPLE | data_content_41 | NULL | ref | idx_data_content_41_代号 | idx_data_content_41_db识别码 | 183 | dmm.data_content_193.番号 | 1 | 11.11 | Using where |
+----+-------------+------------------+------------+------+---------------------------------+---------------------------------+---------+-----------------------------+--------+----------+-------------+
2 rows in set, 1 warning (0.27 sec)