有这样一个需求,要存储千万级的帖子,十万级的用户然后给定2000个用户ID,需要按照帖子发表时间,从这2000个用户发过的帖子中查出最新的10000个帖子给定的2000各用户中,其中10个非常活跃,可能这最新10000个帖子只是这10个用户发表的这种情况该如何存储,如何查询
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
加上一个测试结果初步的测试结果select * from dynamics where uid in ({$uidStr}) order by created_at desc limit 10000上面这种查询,其中dynamics表记录在3百万左右,$uidStr是2000个mysql(5.5)0.19s 左右(where in 情况下,created_at索引好像没有用上)mongodb$cursor =$dyCollection->find(array("uid" => array('$in' => $selectedUid)))->sort(array("created_at"=>-1))->limit(10000);对created_at建立索引后,0.09s 左右另外如果插入mongodb是按时间顺序插入的话,其实可以不用再排序了,查出来的就是当时插入的顺序,但是mysql where in的话,取出来的结果好像是按in那个字段升序排的另外limit减少到3000以下的时候,mysql只需要0.04s,mongodb只需要0.02s,