[英]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),并且需要在以下列上添加索引
id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.