这是我当前的查询
WHERE Keywords.Word = '$search'
但这仅在$search
是一个单词时有效,如果它的两个或三个单词则找不到任何内容,因为我的关键字表单字段每个记录只有一个单词。
最快的方法是什么?
答案 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),并且需要在以下列上添加索引
id