我有一个包含用户对象的集合,每个用户对象都有一个唯一的ID和其他一些东西。这个集合可能有数百万条目。我的问题是查询是多么昂贵,需要300个UIDS列表,然后检查集合中存在哪些?
答案 0 :(得分:0)
我认为这个问题#1有两部分:查询,#2:表现。
1:查询
使用$in
clause可以轻松完成此操作。
2:表现
关于$in
子句的事情是,从DB角度来看,只有一种逻辑方法可以做到这一点。它基本上会对你拥有的每个项目进行一次索引搜索。
现在,如果您遵循标准协议并将所有索引保存在RAM中,那么此查询可能会在一秒钟内完成。我有一些功能强大的服务器,拥有100万个数据库,而这种搜索100“UIDS”的时间约为500毫秒。
YMMV。您可以通过分块并运行多个同步查询来获得更好的性能,以确保您在服务器上获得多个线程。