我正在尝试使用全文并匹配多个表但没有Join
,因为它们不相关。
我尝试过类似的东西:
SELECT mg_users.username, mg_users.email, mg_uzgajivac.imeuzgajivaca ...
FROM mg_users,mg_uzgajivac,mg_buy_it_now,mg_golu ...
WHERE MATCH(mg_users.username) AGAINST ('rasa')
OR MATCH(mg_users.email) AGAINST ('rasa')
OR MATCH(mg_uzgajivac.imeuzgajivaca) AGAINST ('rasa')
OR MATCH(mg_uzgajivac.mjesto) AGAINST ('rasa') ...
但它什么也没有回复,我不确定我做错了什么。
答案 0 :(得分:1)
我认为您的问题是索引不是最新的。您需要为MATCH ... AGAINST重建索引才能正常工作。
如果您正在使用MyISAM表,则修复表将重建索引
REPAIR TABLE table_name;
但如果您使用的是Innodb表,“你应该这样做。”您可以执行伪ALTER命令,该命令将强制重建索引。它不会改变任何东西,但它会强制表重建。
ALTER TABLE table_name ENGINE=innodb;
这可能是偏离主题的,但需要考虑。您可以使用多列全文索引来使查询更快一些
ALTER TABLE mg_users ADD FULLTEXT INDEX(user_name,email); ALTER TABLE mg_uzgajivac ADD FULLTEXT INDEX(imeuzgajivaca,mjesto);
然后您的查询将如下所示
SELECT mg_users.username, mg_users.email, mg_uzgajivac.imeuzgajivaca ...
FROM mg_users,mg_uzgajivac,mg_buy_it_now,mg_golu ...
WHERE MATCH(mg_users.username, mg_users.email) AGAINST ('rasa')
OR MATCH(mg_uzgajivac.imeuzgajivaca, mg_uzgajivac.mjesto) AGAINST ('rasa')
...