2011-03-17 53 views
0

我想做一個搜索查詢,其中搜索字符串可能在幾個字段。該表具有> 20K條記錄,查詢需要6-7秒。我正在想辦法加快速度。mysql像查詢幾個字段

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 

我想知道做一個字段已經全部三個文本字符串和做一個領域,而不是三個全文搜索。

任何幫助表示讚賞。

託姆

回答

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)