mysql - mysql fulltext 的性能取决于关键字的顺序

标签 mysql sql full-text-search

我在使用 mysql 全文搜索时遇到问题。当我更改关键字的顺序时,搜索速度会发生变化。例如我有 4 个查询,它们都返回相同的结果:

1)快速(1 秒)

SELECT * FROM table WHERE (MATCH (column_data) AGAINST('+english* +php*' IN BOOLEAN MODE)

2) 慢(10 秒)

SELECT * FROM table WHERE MATCH (column_data) AGAINST('+php* +english*' IN BOOLEAN MODE)

3)快速(1 秒)

SELECT * FROM table WHERE MATCH (column_data) AGAINST('+php*' IN BOOLEAN MODE) AND (MATCH (column_data)) AGAINST('+english*' IN BOOLEAN MODE))

4) 慢(10 秒)

SELECT * FROM table WHERE (MATCH (column_data) AGAINST('+english*' IN BOOLEAN MODE)) AND (MATCH (column_data) AGAINST('+php*' IN BOOLEAN MODE))

如何优化它?

最佳答案

我找到了答案。那是因为每个关键字的结果数。我们应该把关键字 has small result 放在最前面。

关于mysql - mysql fulltext 的性能取决于关键字的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44236423/

相关文章:

MySQL 触发器 + SELECT FOR UPDATE 未锁定

Elasticsearch - 启用字段的全文搜索

MySQL 全文搜索 1 个字符仅适用于 MyISAM?

postgresql - 全文搜索(Postgres)与 Elasticsearch

mysql - 不同的代码 : Delimiter//and Delimiter $$

sql - 根据日期自动在 MySQL 服务器上创建表?

php - 使用 JSON 数据作为输入,基于每行的两个约束选择数据

sql - VB6将文件路径插入SQL FROM子句

mysql - 合并 id 重叠的 2 个表

java - 更新多个表 JDBC