MYSQL 全文索引表现
MYSQL FULLTEXT Index Performances
我有多个字段的 Mysql table,我正在使用 api 在这些标签中搜索一个或多个词:
myTable(id, label1, label2, label3, label4, label5)
所以我在所有字段上创建了 1 FULLTEXT 索引(label1、label2、label3、label4、label5)
使用请求:
CREATE FULLTEXT INDEX search_index_mytable ON myTable(label1, label2, label3, label4, label5);
使用示例:我要查找单词:word1、word2、word3
-- example 1
SELECT id
FROM myTable
WHERE MATCH(label1, label2, label3, label4, label5 )
AGAINST ('word1* word2* word3*' IN BOOLEAN MODE)
-- example 2
SELECT id
FROM myTable
WHERE MATCH(label1, label2, label3, label4, label5 ) AGAINST ('word1*' IN BOOLEAN MODE)
OR MATCH(label1, label2, label3, label4, label5 ) AGAINST ('word2*' IN BOOLEAN MODE)
OR MATCH(label1, label2, label3, label4, label5 ) AGAINST ('word3*' IN BOOLEAN MODE)
我的问题是:哪个请求示例最快?他们相等吗?
非常感谢
示例 1 更快;这是 FULLTEXT 之美的一部分。
您可能不需要单词末尾的 *
。 “词干提取”无论如何都完成了。
您可能需要在每个单词前加一个 +
。这取决于你想要“或”还是“与”逻辑。
当心“短”词和“停用词”。
请注意,您建立的索引将始终针对所有 5 列进行测试;如果您只需要针对一列进行测试,则需要另一个 FT 索引。
我有多个字段的 Mysql table,我正在使用 api 在这些标签中搜索一个或多个词:
myTable(id, label1, label2, label3, label4, label5)
所以我在所有字段上创建了 1 FULLTEXT 索引(label1、label2、label3、label4、label5) 使用请求:
CREATE FULLTEXT INDEX search_index_mytable ON myTable(label1, label2, label3, label4, label5);
使用示例:我要查找单词:word1、word2、word3
-- example 1
SELECT id
FROM myTable
WHERE MATCH(label1, label2, label3, label4, label5 )
AGAINST ('word1* word2* word3*' IN BOOLEAN MODE)
-- example 2
SELECT id
FROM myTable
WHERE MATCH(label1, label2, label3, label4, label5 ) AGAINST ('word1*' IN BOOLEAN MODE)
OR MATCH(label1, label2, label3, label4, label5 ) AGAINST ('word2*' IN BOOLEAN MODE)
OR MATCH(label1, label2, label3, label4, label5 ) AGAINST ('word3*' IN BOOLEAN MODE)
我的问题是:哪个请求示例最快?他们相等吗?
非常感谢
示例 1 更快;这是 FULLTEXT 之美的一部分。
您可能不需要单词末尾的 *
。 “词干提取”无论如何都完成了。
您可能需要在每个单词前加一个 +
。这取决于你想要“或”还是“与”逻辑。
当心“短”词和“停用词”。
请注意,您建立的索引将始终针对所有 5 列进行测试;如果您只需要针对一列进行测试,则需要另一个 FT 索引。