首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >几个字段上的mysql类查询

几个字段上的mysql类查询
EN

Stack Overflow用户
提问于 2011-03-18 00:18:45
回答 1查看 87关注 0票数 0

我正在尝试执行搜索查询,其中搜索字符串可能位于多个字段中。该表有超过20K条记录,查询耗时6-7秒。我正在试图找到一种方法来加速这一过程。

代码语言:javascript
运行
复制
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

EN

回答 1

Stack Overflow用户

发布于 2011-03-18 00:25:50

你可以这样做:

代码语言:javascript
运行
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5341937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档