开发者社区 问答 正文

如何加快SELECT ..LIKE查询在MySQL中的多列??mysql

我有一个MySQL表,对此SELECT x, y, z FROM table WHERE x LIKE '%text%' OR y LIKE '%text%' OR z LIKE '%text%'查询非常频繁。任何索引都可以帮助加快速度吗?

表中有几百万条记录。如果有什么方法可以加快搜索速度,是否会严重影响数据库文件对磁盘的使用以及INSERTand DELETE语句的速度?(UPDATE从未执行过)

更新:发布后,我很快就看到了很多有关LIKE查询中使用方法的信息和讨论;我想指出,该解决方案必须使用LIKE '%text%'(也就是说,我要查找的文本在前面加上%通配符)。由于多种原因,包括安全性,数据库也必须是本地的。

展开
收起
保持可爱mmm 2020-05-17 10:21:40 465 分享 版权
1 条回答
写回答
取消 提交回答
  • 索引不会加快查询的速度,因为对于文本列,索引通过索引从左开始的N个字符来工作。当您喜欢'%text%'时,它不能使用索引,因为在文本之前可以有可变数量的字符。

    您应该做的是根本不使用这样的查询。相反,您应该使用MySQL支持MyISAM表的类似FTS(全文搜索)的工具。自己为非MyISAM表创建这样的索引系统也很容易,您只需要一个单独的索引表即可在实际表中存储单词及其相关ID。

    更新资料

    全文搜索可用于带有MySQL 5.6+的InnoDB表。来源:stack overflow

    2020-05-17 10:38:46
    赞同 展开评论