1
当我在我的网站上进行搜索时,我想搜索三列搜索词组。因为我不想搜索“约翰”来返回“约翰逊”,所以我目前使用带有单词边界的RLIKE。但是,我的表有超过400,000行,这个查询非常慢。任何人都可以想到更快的方法来做同样的事情吗?我该如何优化当前使用RLIKE和词边界的查询?
这里是我的查询:
SELECT * FROM mytable
WHERE (
(accountholder RLIKE '[[:<:]]John[[:>:]]')
OR (alternatename RLIKE '[[:<:]]John[[:>:]]')
OR (payeename RLIKE '[[:<:]]John[[:>:]]')
);
只是一个想法,但没有测试,所以我不会发布它作为答案:将“哪里(concat(accountholder,alternatename,payeename)RLIKE'[[:<:]]John[[:>:]]')”的窍门? 我所知道的是,如果你使用concat,你可能会尝试不索引任何账户持有者,替代名称,payeename,因为它可能会降低性能 – JScoobyCed 2012-03-06 02:50:02