MySQL全文搜索--有没有可能用附加的where子句或连接来加速查询?

kb5ga3dv  于 2023-03-17  发布在  Mysql
关注(0)|答案(1)|浏览(97)

我注意到,当使用额外的where子句或连接来减少搜索池时,MySQL中的全文搜索似乎并没有加快速度。
例如:

SELECT * FROM `blog_posts`
WHERE `id` = 1
AND MATCH (post_body) AGAINST ('+mango +smoothie' IN BOOLEAN MODE);

所需的时间

SELECT * FROM `blog_posts`
WHERE MATCH (post_body) AGAINST ('+mango +smoothie' IN BOOLEAN MODE);

因此,看起来MATCH子句似乎总是针对整个数据库工作,即使您使用限制性的where子句对其进行预过滤。这是设计的吗?有什么方法可以解决这个问题吗?我有这样的情况,我想针对一个相当小的子集运行布尔搜索子句,而查询花费了很长时间。

euoag5mw

euoag5mw1#

是的,它是设计的。
MySQL通常会为每个表引用使用一个索引。如果它使用了全文索引,就不会使用其他索引。
因此,是否有额外的条件、连接或索引来支持这些条件或连接并不重要,无论哪种方式,都将强制检查与全文搜索匹配的所有行。

相关问题