2011-09-11 48 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

回答