为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

扬帆大鱼 2019-04-13 08:36:17
有这样一个需求,要存储千万级的帖子,十万级的用户然后给定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查询貌似不太好~~~
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 398 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号