我正在为我的站点的消息部分构建一个搜索功能,并且有一个包含超过 9,000,000 行的消息数据库,以及在 、 和 字段上sender
的subject
索引message
。我希望在查询中使用 LIKE mysql 子句,例如 (ex)
SELECT sender
, subject
, message
FROM Messages
WHERE message
LIKE '%EXAMPLE_QUERY%';
检索结果。不幸的是,当存在前导通配符时,MySQL 不使用索引,这是搜索查询可能出现在消息中的任何位置所必需的(这就是通配符的工作方式,不是吗?)。查询非常非常慢,我也不能使用全文索引,因为烦人的 50% 规则(我不能排除那么多)。无论如何(甚至,任何替代方法)都可以使用 like 和两个通配符优化查询吗?任何帮助表示赞赏。