mysql where uid in (2000个uid) 的优化或更好的存储方案

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

LEATH

只说查询,和我最近用的一个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查询貌似不太好~~~
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript