全文MYSQL查询

全文MYSQL查询,mysql,full-text-search,Mysql,Full Text Search,我试图进行全文查询,但遇到了一个错误 以下是查询: SELECT `o`.`fruits_id` FROM `fruits` as `o` JOIN `fruits_categories` as `oc` ON `o`.`fruits_id` = `oc`.`fruits_id` JOIN `categories` as `c` ON `c`.`cat_id` = `oc`.`cat_id` JOIN `fruits_location` as `ol` ON `o`.`fruits_id`

我试图进行全文查询,但遇到了一个错误

以下是查询:

SELECT `o`.`fruits_id` 
FROM `fruits` as `o` JOIN `fruits_categories` as `oc` ON `o`.`fruits_id` = `oc`.`fruits_id` 
JOIN `categories` as `c` ON `c`.`cat_id` = `oc`.`cat_id` 
JOIN `fruits_location` as `ol` ON `o`.`fruits_id` = `ol`.`fruits_id` 
JOIN `location` as `l` ON `l`.`location_id` = `ol`.`location_id` 
JOIN `fruits_price` as `op` ON `o`.`fruits_id` = `op`.`fruits_id` 
JOIN `price` as `p` ON `p`.`price_id` = `op`.`price_id` 
WHERE ( (MATCH (o.fruits_name, o.fruits_description, o.address, o.instagram_tag) AGAINST ('apple') OR MATCH (c.cat_name) AGAINST ('apple') OR MATCH (l.location_name) AGAINST ('apple') OR MATCH (p.price_name) AGAINST ('apple') ) 
AND (MATCH (o.fruits_name, o.fruits_description, o.address, o.instagram_tag) AGAINST ('orange') OR MATCH (c.cat_name) AGAINST ('orange') OR MATCH (l.location_name) AGAINST ('orange') OR MATCH (p.price_name) AGAINST ('orange') ) ) 
在我的表格上:

果实

FULLTEXT KEY `fruits_name` (`fruits_name`),
FULLTEXT KEY `fruits_description` (`fruits_description`),
FULLTEXT KEY `address` (`address`),
FULLTEXT KEY `instagram_tag` (`instagram_tag`)
类别

FULLTEXT KEY `cat_name` (`cat_name`)
位置

FULLTEXT KEY `location_name` (`location_name`)
价格

我得到一个错误:

Can't find FULLTEXT index matching the column list

问题是您在水果表中分别为字段编制了索引,但在查询中尝试以组合方式搜索它们!删除水果表中现有的全文索引,并在这4个字段上创建一个新的复合索引。

直接在phpmyadmin中运行此查询需要3秒(一页约12秒)是否正常?phpmyadmin会自动在任何选择查询的末尾设置一个限制。如果你有很多记录,这可能是一个区别。否则,不会有显著差异。水果表只有大约200行。是否有更好的查询可以完全优化它?顺便说一句,在php代码中,我有限制9,它小于phpMyAdmin中的默认值。在这种情况下,sg else必须导致延迟。您应该将此作为一个单独的问题与php代码一起发布,并附上解释。
Can't find FULLTEXT index matching the column list