简单描述一下,有一张搜索历史记录表,非常简单,主要字段就是 word,搜索的字或者句,不去重,数量级可能达到千万级别,现在有一个需求就是根据用户输入的字或者词匹配最近 5 条不重复历史搜索记录!
word 字段可能是中英文,建了索引,查询用的 like, 查询语句是:
select word from table where word like '$word%' limit 100
查询前 100 条,然后在代码里面去重,遇到的问题:
1.前 100 条可能都是重复的,这样去重之后不足 5 条,查 200 条? 300 条?还是 500 条?太不靠谱了
2.即使建了索引,查询一些单词也会扫描几十万行,因为库里面重复的单词比较多,还是很慢
有没有什么好的办法优化一下?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.