有这样一个需求,要存储千万级的帖子,十万级的用户然后给定2000个用户ID,需要按照帖子发表时间,从这2000个用户发过的帖子中查出最新的10000个帖子PS:极端情况给定的2000各用户中,其中10个非常活跃,可能这最新10000个帖子只是这10个用户发表的请教诸位大神,这种情况该如何存储,如何查询
2 回答

LEATH
TA贡献1936条经验 获得超7个赞
只说查询,和我最近用的一个sql类似,在一张近百万数据的表中,通过一个文章id(docId),找出对应的word(word是根据文章标题分词得到的),再根据这些word,查找所有的相关的文章id。一开始的做法是selectdocIdfromtab1wherewordin(selectwordfromtab1wheredocId=123)groupbydocIdlimit1000;各个字段都建了索引,执行过后,花了35s左右时间。后来换成join查询,能达到50ms左右,经过讨论,问题是出在in上,导致查询时没用上索引,优化后的sql是:selectdocIdfrom(selectwordfromtab1wheredocId=123)ast2jointab1tont.word=t2.wordwheret2.wordisnotnullGROUPBYdocIdlimit1000说了这么多,是想说用in查询貌似不太好~~~
添加回答
举报
0/150
提交
取消