像%query这样的mysql使用全文索引很慢

时间:2011-07-14 15:26:19

标签: mysql database

我正在使用这样一个简单的mysql LIKE查询:
SELECT * FROM myTable WHERE field LIKE 'aaa%' ORDER BY field2

我在“字段”上有一个全文索引,但它仍然很慢。 我知道有一个选项可以使用匹配。有什么不同?怎么样?我使用的最佳方法是什么? 请注意,对于以“aaa”

开头的所有内容,我使用“%”

更新: 我最终使用了这样的东西: SELECT
*, MATCH (name) AGAINST ('a*' IN BOOLEAN MODE) AS SCORE
FROM
users WHERE
MATCH (name) AGAINST ('a*' IN BOOLEAN MODE)
ORDER BY SCORE, popularity DESC LIMIT 4

我想改变的一件事是,首先不是SCORE的顺序,而是我的现场流行度,而是通过一个简单的权重函数来命令,比如0.5 * SCORE + 0.5 *流行度。怎么样?

1 个答案:

答案 0 :(得分:10)

LIKE不使用全文索引。要使用全文索引,您必须使用匹配(如您所说):

SELECT * 
FROM myTable 
WHERE MATCH(field) AGAINST ('aaa*' IN BOOLEAN MODE)
ORDER BY field2

MySQL ManualFull-Text Search Functions上有广泛的章节。