我在mysql 版本:5.1.61-community-log 中使用InnoDB引擎。要搜索的文本长度少于100个字符。使用 LIKE'%searchstring%'查询的效果是否会通过索引文本来改善?
编辑:
我正在使用此查询来查询jquery自动建议组件
我正在使用第三方虚拟主机服务。所以升级对我来说不是一个选择
答案 0 :(得分:4)
不,添加索引无法帮助您进行LIKE '%foo%'
次查询(多*)。如果您有一个常量前缀,LIKE
条件只能有效地使用索引,例如LIKE 'foo%'
您应该考虑使用full text search。如果您使用的是MySQL 5.5或更早版本,则仅支持MyISAM引擎。在MySQL 5.6或更新版本中,InnoDB也支持全文搜索。
如果您使用的是旧版本的MySQL,无法升级,并且无法更改存储引擎(因为您需要InnoDB的其他功能,例如外键约束),那么您可以考虑创建一个新的MyISAM表它只存储主键和文本列。如果您还需要访问其他列,则可以使用此表执行快速全文搜索并加入原始表。
您还可以考虑使用外部文本搜索引擎,例如:
(*)如果您添加的索引是查询的覆盖索引,则可以通过添加索引获得一些小改进。由于索引的宽度较小,索引的完整扫描将比整个表的完整扫描更快。