Mysql Mariadb全文匹配两列

Mysql Mariadb全文匹配两列,mysql,mariadb,mariasql,Mysql,Mariadb,Mariasql,我的查询语法有问题: SELECT `users`.`name`, `posts`.* FROM `posts` LEFT JOIN `users` ON `posts`.`user_id` = `users`.`id` WHERE MATCH (title,body) AGAINST('search') 匹配仅使用一个,不使用两个。。。请接受我的建议如何修复它 要检查“搜索”是否同时出现在标题和正文中,我建议使用这种不明显的组合。(我省略了用户,因为它们与问题无关。) 当使用FULLTEX

我的查询语法有问题:

SELECT `users`.`name`, `posts`.*
FROM `posts` 
LEFT JOIN `users` ON `posts`.`user_id` = `users`.`id`
WHERE MATCH (title,body) AGAINST('search')
匹配
仅使用一个,不使用两个。。。请接受我的建议如何修复它

要检查
“搜索”
是否同时出现在
标题
正文
中,我建议使用这种不明显的组合。(我省略了
用户
,因为它们与问题无关。)

当使用
FULLTEXT
时,我认为优化器不知道如何有效地应用两次FULLTEXT,因此这是一种让它这样做的卑鄙方法

我首先选择了
title
,假设它的单词更少,因此不需要进行其他测试

“索引合并相交”可能会在以下情况下生效:

SELECT  *
    FROM  posts
    WHERE  MATCH(title) AGAINST("search" IN BOOLEAN MODE)
      AND  MATCH(body)  AGAINST("search" IN BOOLEAN MODE) 
在这两种情况下,您都需要:

同时包含两列的单个ft索引没有用处

如果需要进一步讨论,请提供
SHOW CREATE TABLE
EXPLAIN SELECT…


您是否拥有
ENGINE=MyISAM
ENGINE=InnoDB
,这可能很重要;这两种实现方式完全不同。

AGAINSTa
?你想要“或”-明智还是“和”-明智?对不起。。我需要在列标题和列正文中搜索两个列,但这两个列是否应该匹配
“搜索”
?或者一个就足够了吗?两个都………选择
用户
名称,
帖子
*从
帖子
左侧加入
帖子上的
用户
用户id
用户id匹配(posts.title)与(+'%divo%'在布尔模式下)或匹配(posts.body)与(+“%divo%”在布尔模式下)
SELECT  *
    FROM  posts
    WHERE  MATCH(title) AGAINST("search" IN BOOLEAN MODE)
      AND  MATCH(body)  AGAINST("search" IN BOOLEAN MODE) 
FULLTEXT(title),
FULLTEXT(body)