要在数据库中搜索任何列"foo_desc"和"bar_desc"中包含关键字"foo"和"bar"的行,我会执行以下操作:
SELECT *
FROM t1
WHERE MATCH (t1.foo_desc, t2.bar_desc) AGAINST ('+foo* +bar*' IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)
要么
SELECT *
FROM t1
WHERE (CONCAT(t1.foo_desc, t2.bar_desc) LIKE '%foo%') AND (CONCAT(t1.foo_desc, t2.bar_desc) LIKE '%bar%')
Run Code Online (Sandbox Code Playgroud)
我预计最后一个查询的缺点是性能.
好处是LIKE查询找到'xxfoo',其中MATCH AGAINST没有.
哪个是首选的还是有更好的解决方案?