mysql全文查询很慢

时间:2014-07-15 07:52:46

标签: mysql full-text-search query-optimization full-text-indexing

我在MySql中有一个用户详细信息表,其中包含大约500000条记录。我还在此表的firstname,lastname字段上创建了全文索引。但是当我试图搜索任何单个后者/字母(例如a到z,单个字符)时,它在第一次响应非常慢。这需要大约5-6秒的时间来回应。之后,它降至800毫秒。 EXPLAIN命令似乎没问题,因为它在类型列中显示“全文”,但我无法找到它为什么反应非常慢。

我的查询如下所示。

SELECT  SQL_NO_CACHE usr.id, usr.uname, ifnull(usr.fullname,'') fullname,
        ifnull(ct.City, '') city,
        MATCH(usr.fname,usr.lname) AGAINST('a*' IN BOOLEAN MODE) ordfld 
FROM usertable usr
LEFT JOIN citymas ct ON ct.CityID = upm.CityID
WHERE usr.UserStatus IN(10,11)
AND usr.id <> 1
AND MATCH(usr.fname,usr.lname) AGAINST('a*' IN BOOLEAN MODE) > 0  
ORDER BY ( CASE WHEN usr.fullname = 'a' THEN 1
                WHEN usr.fname rlike 'a%' THEN 2 
                WHEN usr.lname LIKE 'a%' THEN 3 
                WHEN usr.fname like '%a' THEN 6 
                WHEN usr.lname LIKE '%a' THEN 7 
                WHEN usr.fullname LIKE '%a%' THEN 8
                ELSE 10 END ),
 ordfld DESC,
( CASE WHEN ifnull(usr.cityid,0) = 234 THEN '0' ELSE '1' END ), usr.fullname 
LIMIT 20

并向我解释

1, 'SIMPLE', 'usr', 'fulltext', 'PRIMARY,IX_usertable_fname_lname', 'IX_usertable_fname_lname', 0, NULL        , 1, 'Using where; Using filesort'
1, 'SIMPLE', 'ct' , 'eq_ref'  , 'PRIMARY'                         , 'PRIMARY'        ,          3, 'usr.cityid', 1, NULL

以上查询花费了太多时间,它在800-900ms之间响应。

有什么猜测吗?

编辑:

ft_min_word_len有问题吗?当我在localhost中更改它并再次重建索引时,同样的查询在500ms内返回。如果我想在Amazon RDS上更改此内容,我该如何做?

0 个答案:

没有答案