在mysql中为文本编制索引是否会提高使用LIKE';%搜索文本的效率搜索%';

在mysql中为文本编制索引是否会提高使用LIKE';%搜索文本的效率搜索%';,mysql,performance,query-optimization,innodb,Mysql,Performance,Query Optimization,Innodb,我在mysql中使用InnoDB引擎版本:5.1.61-community-log。要搜索的文本长度小于100个字符。使用如“%searchstring%”对文本进行索引是否会提高查询的性能 编辑: 我将此查询用于jquery自动建议组件。 我正在使用第三方网络托管服务。所以升级对我来说不是一个选项不,添加索引对你的比如“%foo%”查询(很多*)没有帮助。LIKE条件只有在前缀为常量时才能有效地使用索引,例如LIKE'foo%' 你应该考虑一下。如果您使用的是MySQL 5.5或更早版本,则仅

我在mysql中使用InnoDB引擎版本:5.1.61-community-log。要搜索的文本长度小于100个字符。使用如“%searchstring%”对文本进行索引是否会提高查询的性能

编辑:
我将此查询用于jquery自动建议组件。

我正在使用第三方网络托管服务。所以升级对我来说不是一个选项

不,添加索引对你的
比如“%foo%”
查询(很多*)没有帮助。
LIKE
条件只有在前缀为常量时才能有效地使用索引,例如
LIKE'foo%'

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

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

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


(*)如果您添加的索引是查询的覆盖索引,那么您可以通过添加索引来获得一点改进。由于索引的宽度较小,索引的完全扫描速度将快于整个表的完全扫描。

参考全文中给出的内容只能与MyISAM一起使用。我的其余表使用InnoDB引擎。在一个表中使用MyISAM,在其余的表中使用InnoDB是一个好主意吗?此表与其他表有很多内部连接。@Terminal:如果您使用的是MySQL 5.5或更低版本,则全文搜索只能与MyISAM引擎一起使用。MySQL 5.6中也支持InnoDB。您使用的是什么版本的MySQL?升级是一个选项吗?我当前的mysql版本:5.1.61-community-log。我使用的是网络托管服务,所以升级不是我的选项