繁体   English   中英

MySQL,选择一个短语作为单独单词的最快方法?

[英]MySQL, quickest way to select on a phrase as separate words?

这是我目前的查询

WHERE Keywords.Word = '$search'

但这仅在$search是一个单词的情况下有效,如果它的两个或三个单词则找不到任何内容,因为我的关键字表words字段每条记录只有一个单词。

最快的方法是什么?

取决于您的编程语言,将搜索词分成一个数组,然后使用IN子句:

WHERE Keywords.Word IN ('$search[0]','$search[1]',...)

IN子句不会为您提供最佳性能。 您可以看看我对另一个问题的回答

我将基于对表列的连接基于搜索条件创建虚拟表。

就像是

SELECT *
FROM   table t 
       LEFT JOIN (SELECT 'term1' AS name 
             UNION 
             SELECT 'term2' AS name 
             UNION 
             SELECT 'term3' AS name)  f
         ON f.name = w.Word 
WHERE  (f.name IS NOT NULL)
GROUP by t.id

在这种情况下,您可以将虚拟表值动态构造为静态硬编码值(term1,2,3),并且需要在以下列上添加索引

  1. (字)
  2. 假设您有主键id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM