我正在使用这样一个简单的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 *流行度。怎么样?
答案 0 :(得分:10)
LIKE
不使用全文索引。要使用全文索引,您必须使用匹配(如您所说):
SELECT *
FROM myTable
WHERE MATCH(field) AGAINST ('aaa*' IN BOOLEAN MODE)
ORDER BY field2