mysql喜欢在几个字段上查询

时间:2011-03-17 16:18:45

标签: mysql

我正在尝试进行搜索查询,其中搜索字符串可能位于多个字段中。该表具有> 20K记录和查询需要6-7秒。我想找到一种方法来加快速度。

SELECT SQL_CALC_FOUND_ROWS cl.fname, 
                           cl.email, 
                           e.e_id 
FROM   clients cl, 
       records e 
WHERE  (( cl.fname LIKE 'smith%' 
           OR cl.lname LIKE 'smith%' 
           OR cl.email LIKE 'smith%' )) 
       AND cl.id = e.client_id 

我想知道如何创建一个包含所有三个文本字符串的字段,并在一个字段而不是三个字段上进行全文搜索。

感谢任何帮助。

汤姆

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

SELECT * 
FROM   ((SELECT l.fname, 
                cl.email, 
                e.e_id 
         FROM   clients cl 
                JOIN records e 
                  ON cl.id = e.client_id 
         WHERE  cl.fname LIKE 'smith%') 
        UNION ALL 
        (SELECT l.fname, 
                cl.email, 
                e.e_id 
         FROM   clients cl 
                JOIN records e 
                  ON cl.id = e.client_id 
         WHERE  cl.lname LIKE 'smith%') 
        UNION ALL 
        (SELECT l.fname, 
                cl.email, 
                e.e_id 
         FROM   clients cl 
                JOIN records e 
                  ON cl.id = e.client_id 
         WHERE  cl.email LIKE 'smith%')) d 
GROUP  BY id; 

,您需要以下

的索引
  • (records.client_id)
  • (clients.id)
  • (clients.fname)
  • (clients.lname)
  • (clients.email)