优化 MySQL 中的多列 LIKE 查询
在多列上使用 LIKE 子句的缓慢 SELECT 查询可能会成为性能瓶颈。在本文中,我们将探讨索引是否可以提高查询速度并解决有关磁盘使用和插入/删除性能的问题。
索引可以提高 LIKE 性能吗?
不幸的是,索引对于 MySQL 中的 LIKE 查询无效,因为它们通过从左侧开始索引固定数量的字符来工作。使用 LIKE '%text%',目标字符串之前可以有任意数量的文本,从而防止使用索引。
替代方法
而不是使用 LIKE,考虑 FTS(全文搜索)。 MyISAM 表支持 FTS,可以高效搜索部分字符串匹配项。对于非 MyISAM 表,使用单独的索引表将单词映射到 ID 来实现您自己的索引系统可以复制 FTS 功能。
磁盘使用情况和 INSERT/DELETE 性能
FTS 索引会增加磁盘使用率。但是,对 INSERT/DELETE 操作的影响很小。这是因为插入仅将新单词添加到索引中,这是作为事务的一部分完成的,而删除标记单词以供以后删除。
更新
MySQL 5.6引入了对 InnoDB 表的 FTS 支持,为提高各种表类型的 LIKE 性能提供了强大的选项。
以上是索引可以提高MySQL的多列LIKE查询性能吗?的详细内容。更多信息请关注PHP中文网其他相关文章!