2011-09-11 114 views
0

我有以下查詢這是爲了用來做自動完成一個搜索框:優化自動完成FULLTEXT SQL查詢

SELECT *, MATCH (screen_name, name) AGAINST ('+query*' IN BOOLEAN MODE) AS SCORE 
    FROM users 
    WHERE MATCH (screen_name, name) AGAINST ('+query*' IN BOOLEAN MODE) 
    ORDER BY SCORE DESC LIMIT 3 

我也有在SCREEN_NAME &名全文索引(一起)。當這張桌子相對較小時(50k),這個效果很好。現在表是〜200k,並且需要幾秒(!)來完成每個查詢。我正在使用MySql MyISAM。這是否合理?我可以檢查什麼方向來改進,因爲它不能滿足自動完成查詢的需要。

+0

有多少行符合WHERE子句? – Karolis

+0

您可能需要更改爲第三方文本索引,如Sphinxsearch.com –

+0

@Karolis它取決於查詢。如果它只是一個兩個字母而不是很多。更少結果的Shoudl查詢會更容易計算? – Noam

回答