为了在任意列“foo_desc”和“bar_desc”中搜索同时包含关键词“foo”和“bar”的行,我会做如下操作:
SELECT *
FROM t1
WHERE MATCH (t1.foo_desc, t2.bar_desc) AGAINST ('+foo* +bar*' IN BOOLEAN MODE)
或者SELECT *
FROM t1
WHERE (CONCAT(t1.foo_desc, t2.bar_desc) LIKE '%foo%') AND (CONCAT(t1.foo_desc, t2.bar_desc) LIKE '%bar%')
我认为上一个查询的缺点是性能问题。
好处是LIKE查询可以找到'MATCH AGAINST'无法找到的'xxfoo'。
哪种方法更好,或者是否有更好的解决方案?