首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何优化这个当前使用RLIKE和单词边界的查询?

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

Stack Overflow用户
提问于 2012-03-06 10:40:13
回答 1查看 106关注 0票数 1

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

下面是我的问题:

代码语言:javascript
运行
复制
SELECT * FROM mytable 
WHERE (
         (accountholder RLIKE '[[:<:]]John[[:>:]]') 
      OR (alternatename RLIKE '[[:<:]]John[[:>:]]')
      OR (payeename RLIKE '[[:<:]]John[[:>:]]')
);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-06 14:22:47

如果你正在搜索一个完整的单词,更好的解决方案是使用全文索引。因此,您的表必须是MyISAM的(如果不是,则创建一个仅用于搜索的表,并在该表和您的表之间建立关系)...then,对要搜索的列创建全文索引,并进行如下查询:

代码语言:javascript
运行
复制
SELECT * FROM mytable WHERE MATCH (accountholder, alternatename, payeename)
AGAINST ('+John' IN BOOLEAN MODE);

...that真的会提升你的表现。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9577184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档