我在 mysql version:5.1.61-community-log 中使用 InnoDB 引擎。要搜索的文本长度小于 100 个字符。使用 LIKE '%searchstring%' 的查询性能是否会随着索引文本而提高?
编辑:
我将此查询用于 jquery 自动建议组件。
我正在使用第 3 方虚拟主机服务。所以升级对我来说不是一个选择
最佳答案
不,添加索引对您的LIKE '%foo%'
查询没有帮助(很多*)。 LIKE
条件只有在您有常量前缀时才能有效地使用索引,例如 LIKE 'foo%'
你应该考虑一个full text search反而。如果您使用的是 MySQL 5.5 或更早版本,则仅支持 MyISAM 引擎。在 MySQL 5.6 或更新版本中,InnoDB 也支持全文搜索。
如果你使用的是旧版本的MySQL,无法升级,也无法更改存储引擎(因为你需要InnoDB的其他特性,比如外键约束),那么你可以考虑创建一个新的MyISAM表它仅存储主键和文本列。如果您还需要访问其他列,您可以使用此表执行快速全文搜索并连接到原始表。
您还可以考虑使用外部文本搜索引擎,例如:
(*) 如果您添加的索引是查询的覆盖索引,您将通过添加索引获得小幅改进。由于索引的宽度较小,索引的全扫描会比全表扫描更快。
关于mysql - 在 mysql 中索引文本是否会改进使用 LIKE '%search%' 搜索文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10958958/