bbb->cccc}} and that is a {{dddd}}!" 现在,我想搜索例如{{xxx--6ren">
gpt4 book ai didi

mysql - 如何加快MySQL的搜索速度?是否可以使用特殊字符进行全文搜索?

转载 作者:行者123 更新时间:2023-11-29 21:38:44 24 4
gpt4 key购买 nike

我的 VARCHAR InnoDB 表列中有如下字符串:

"This is a {{aaaa->bbb->cccc}} and that is a {{dddd}}!"

现在,我想搜索例如{{xxx->yyy->zzz}}。括号是字符串的一部分。有时会与另一个列一起搜索,但其中只包含一个普通的 id,因此不需要考虑(我猜)。

我知道我可以使用 LIKE 或 REGEXP。但这些(已经尝试过的)方法太慢了。我可以引入全文索引吗?或者我应该添加另一个帮助表?我是否应该替换特殊字符 {}-> 来获取全文搜索的单词?或者我还能做什么?

搜索可以处理大约一万行,我假设我经常得到大约一百个命中。

最佳答案

此链接应该为您提供有关 MySQL 中的 FULLTEXT 索引所需的所有信息。

MySQL dev site

您需要特别注意的部分是:

“全文搜索是使用 MATCH() ... AGAINST 语法执行的。MATCH() 采用逗号分隔的列表来命名要搜索的列。AGAINST 采用要搜索的字符串以及一个可选修饰符指示要执行的搜索类型。搜索字符串必须是在查询评估期间保持不变的字符串值。这排除了例如表列,因为每行的列可能不同。”

简而言之,要回答您的问题,您应该会发现通过在宽 VARCHAR 列上实现全文索引可以缩短查询执行时间。 假设您使用的是兼容的存储引擎(InnoDB 或 MyISAM)

这里还有一个示例,说明如何查询全文索引以及问题中暗示的附加 ID 字段:

SELECT * 
FROM table
WHERE MATCH (fieldlist) AGAINST ('search text here')
AND ( field2= '1234');

关于mysql - 如何加快MySQL的搜索速度?是否可以使用特殊字符进行全文搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34709450/

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