3

我在 mysql version:5.1.61-community-log中使用 InnoDB 引擎。要搜索的文本长度小于 100 个字符。使用LIKE '%searchstring%'的查询的性能是否会随着对文本的索引而提高?

编辑:
我将此查询用于 jquery 自动建议组件。
我正在使用 3rd 方虚拟主机服务。所以升级不是我的选择

4

1 回答 1

4

不,添加索引不会帮助您的LIKE '%foo%'查询(很多*)。一个LIKE条件只有在你有一个常量前缀的情况下才能有效地使用索引,例如LIKE 'foo%'

您应该考虑使用全文搜索。如果您使用的是 MySQL 5.5 或更早版本,则仅支持 MyISAM 引擎。在 MySQL 5.6 或更新版本中,InnoDB 也支持全文搜索。

如果您使用的是旧版本的 MySQL,无法升级,并且无法更改存储引擎(因为您需要 InnoDB 的其他功能,例如外键约束),那么您可以考虑创建一个新的 MyISAM 表,它只存储主键和文本列。如果您还需要访问其他列,则可以使用此表执行快速全文搜索并连接到原始表。

您还可以考虑使用外部文本搜索引擎,例如:

(*) 如果您添加的索引是您查询的覆盖索引,您将通过添加索引获得小幅改进。由于索引的宽度较小,因此对索引进行全扫描会比全表全扫描要快。

于 2012-06-09T06:34:44.410 回答