mysql - 在 mysql 中索引文本是否会改进使用 LIKE '%search%' 搜索文本

标签 mysql performance query-optimization innodb

我在 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/

相关文章:

查询 JSON 对象时 MySQL 查询超时

mysql - mysqli 中 json 的语法

php - 获取多文件上传文件的名称

Mysql 查询获取最近 8 天的数据

javascript - 正则表达式与 while 循环

mysql - 在大数据库中优化 SQL 查询?

MySQL 查询优化,用于按日期和状态对项目进行排序

php - 按最常见的类别(Mysql、Php)选择顺序

java - JSF - RichFaces 显示复杂页面的性能问题

c# - 使用嵌套 Where (LINQ) 子句优化数组迭代