2011-07-14 51 views
10

我用一個簡單的MySQL LIKE這樣的查詢速度慢:
SELECT * FROM myTable WHERE field LIKE 'aaa%' ORDER BY field2喜歡的MySQL查詢%是全文索引

我有「場」的全文索引,但仍然是一個非常慢。 我明白有一個選擇使用匹配。有什麼不同?怎麼樣?我的使用最好的方法是什麼? 通知我使用「%」一切以「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 *流行度。怎麼樣?

回答

10

LIKE不使用全文索引。要使用全文索引,你必須使用匹配(如你所說):

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

MySQL ManualFull-Text Search Functions一個廣泛的章。

+0

有趣..有沒有人有任何等效的查詢DB2或sybase?谷歌沒有太大的幫助。 – user606723

+0

@ user606723看看這篇文章:[使用DB2文本搜索的全文搜索](http://www.ibm.com/developerworks/cn/education/data/tutorials/dm-0810shettar/index.html) – Jacob

+0

我已更新我的查詢與「排序」。我如何添加? – Noam