我正在尝试执行搜索查询,其中搜索字符串可能位于多个字段中。该表有超过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
我想知道如何创建一个包含所有三个文本字符串的字段,并在一个字段而不是三个字段上进行全文搜索。
任何帮助都是非常感谢的。
Thom
发布于 2011-03-18 00:25:50
你可以这样做:
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;
并且您需要以下内容的索引
https://stackoverflow.com/questions/5341937
复制相似问题