【发布时间】:2010-10-22 00:41:10
【问题描述】:
要在数据库中搜索“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'。
哪个是首选还是有更好的解决方案?
【问题讨论】: