频繁查询,如 SELECT x, y, z FROM table WHERE x LIKE '%text%' 或 y LIKE '%text%' 或 z LIKE '%text%',针对此类操作优化 MySQL 势在必行。虽然索引通常可以提高索引列的查询效率,但问题在于 LIKE 子句中通配符的使用 (%text%)。
对于文本列,索引通过从左侧开始索引字符来工作。但是,带有前导和尾随通配符(例如 %text%)的 LIKE 查询会阻止索引利用,因为文本的起始位置未知。
相反除了依赖索引之外,还可以考虑以下方法:
如果受影响的表使用MyISAM存储引擎,MySQL会提供FTS。此功能通过索引整个单词而不是固定数量的字符来促进高效的文本搜索。
对于非 MyISAM 表,创建单独的索引索引表,存储单词及其在主表中对应的ID。这本质上模仿了 FTS 功能,支持对索引项进行快速查找。
MySQL 版本 5.6 及更高版本将 FTS 支持扩展到 InnoDB 表,提供了高效的两种存储引擎的替代方案。
以上是如何优化 MySQL 中的多列 LIKE 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!