gpt4 book ai didi

mysql - MATCH AGAINST 在没有连接的情况下跨多个表

转载 作者:行者123 更新时间:2023-11-29 00:08:03 24 4
gpt4 key购买 nike

我正在尝试使用全文并匹配多个表但没有 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') ...

但它什么也没返回,我不确定我做错了什么。

最佳答案

我认为您的问题是索引不是最新的。您需要为 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);更改表 mg_uzgajivac 添加全文索引 (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')
...

关于mysql - MATCH AGAINST 在没有连接的情况下跨多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26598406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com