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

时间:2011-03-14 07:33:20

标签: mysql sql query-optimization

这是我当前的查询

WHERE Keywords.Word = '$search'

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

最快的方法是什么?

3 个答案:

答案 0 :(得分:1)

取决于您的编程语言,将搜索词拆分为数组,并使用IN子句:

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

答案 1 :(得分:0)

IN子句不会给你最好的表现。您可以查看my answer on this other question

答案 2 :(得分:0)

我会根据搜索条件创建虚拟表,对表格列进行连接。

这样的东西
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