gpt4 book ai didi

mysql - 如何加速 MySQL 中多列的 SELECT .. LIKE 查询?

转载 作者:行者123 更新时间:2023-11-29 16:54:26 24 4
gpt4 key购买 nike

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

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

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

最佳答案

索引不会加快查询速度,因为对于文本列,索引是通过从左侧开始索引 N 个字符来工作的。当您执行 LIKE '%text%' 时,它无法使用索引,因为文本之前的字符数可能不同。

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

更新

全文搜索可用于 MySQL 5.6+ 的 InnoDB 表。

关于mysql - 如何加速 MySQL 中多列的 SELECT .. LIKE 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52637079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com