gpt4 book ai didi

mysql - 如何提高 "like ' %variable %'"的性能?

转载 作者:行者123 更新时间:2023-11-29 07:07:34 25 4
gpt4 key购买 nike

我在 MySQL 中有这个查询:

select *
from alias where
name like '%jandro%';

哪些结果是:

Jandro, Alejandro

name 上的索引不能应用于更高的性能,因为它是一个范围过滤器。 有什么方法可以提高查询性能吗?

我试过使用全文索引,但它只适用于完整的单词。

我也尝试过使用MEMORY ENGINE 表,它更快,但我想要一个更好的选择。

编辑
我想我现在只能接受这个:

select *
from alias where match(name) against ('jandro*' in boolean mode);

最佳答案

我过去通过创建一个查找表来完成此操作(不是在 MySQL 上,而且在全文搜索在数据库服务器上普遍可用之前),我在其中创建了所有左切子字符串以进行搜索。

就我而言,这是值得的 - 一个关键的用户旅程涉及按照您建议的方式搜索名称,而性能是关键。

它在插入、更新和删除时使用触发器。

翻译成你的例子:

表别名

ID          name
1 Jandro
2 Alejandro

表名_查找

alias_id          name_substring
1 Jandro
1 andro
1 ndro
1 dro
1 ro
2 Alejandro
2 lejandro
2 ejandro
2 jandro
2 andro
2 ndro
2 dro
2 ro

你的查询就变成了

select alias_id, name
from alias a,
name_lookup nl
where a.id = ni.alias_id
and ni.name_substring like 'andro%'

这样,您就命中了 name_substring 表上的索引。

只有对大型数据集的常见查询才值得这样做 - 但它有效,而且速度很快。

关于mysql - 如何提高 "like ' %variable %'"的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6414886/

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