gpt4 book ai didi

mysql - 我如何优化这个当前使用带单词边界的 RLIKE 的查询?

转载 作者:搜寻专家 更新时间:2023-10-30 23:18:41 27 4
gpt4 key购买 nike

当我在我的网站上进行搜索时,我想在三列中搜索搜索词组。因为我不希望搜索“John”返回“Johnson”,所以我目前使用带词边界的 RLIKE。但是,我的表有超过 400,000 行,这个查询非常慢。谁能想出更快的方法来做同样的事情?

这是我的查询:

SELECT * FROM mytable 
WHERE (
(accountholder RLIKE '[[:<:]]John[[:>:]]')
OR (alternatename RLIKE '[[:<:]]John[[:>:]]')
OR (payeename RLIKE '[[:<:]]John[[:>:]]')
);

最佳答案

如果您要搜索整个单词,更好的解决方案是使用 FULLTEXT 索引。因此,您的表必须是 MyISAM(如果不是,请创建一个您将仅用于搜索的表并在该表与您的表之间建立关系)...然后,在您正在搜索的列上创建 FULLTEXT 索引,并进行如下查询:

SELECT * FROM mytable WHERE MATCH (accountholder, alternatename, payeename)
AGAINST ('+John' IN BOOLEAN MODE);

...这将真正提升您的表现。

你可以找到一个好的开始here .

关于mysql - 我如何优化这个当前使用带单词边界的 RLIKE 的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9577184/

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