我正在尝试进行搜索查询,其中搜索字符串可能位于多个字段中。该表具有> 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
我想知道如何创建一个包含所有三个文本字符串的字段,并在一个字段而不是三个字段上进行全文搜索。
感谢任何帮助。
汤姆
答案 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;
,您需要以下
的索引