[英]MongoDB Count on millions of row is very slow
将MongoDB 2.4与mongoDB .NET驱动程序3.2结合使用
我的收藏有3000万个条目。
var visits = new MongoHelper<CampaignVisitLog>()
.GetCollection().AsQueryable().Count(t => t.campaignId == campaignId);
campaignId已建立索引。 根据CampaignId是否有很多条目,返回计数将需要30秒到几分钟的时间。
什么是计算此收藏集的正确方法?
我的收藏有3000万个条目。
独立于优化整个查询,您不能认为您将获得数百万个项目的快速响应。
如果您正在执行其他查询以获取统计信息,也许是时候安排此计算并使用一些异步服务( 例如Windows服务 , Windows计划任务 , Quartz.NET ...)进行处理,并且还异步获取其结果了。
您可以使用MongoDB存储您的计算服务结果,也可以使用更特定的解决方案: 服务总线 (即RabbitMQ , Azure Service Bus , NServiceBus ...)。
MongoDB C#驱动程序有病。
LINQ查询始终会转换为聚合框架管道。
var pipeline = [ { "$group" : { "_id" : 1, "__result" : { "$sum" : 1 } } }]
db.test.aggregate(pipeline)
由于LINQ查询未指定任何约束,因此将在服务器上进行完整的集合扫描。
确保您有足够的内存将索引存储在ram中。
https://docs.mongodb.org/manual/tutorial/ensure-indexes-fit-ram/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.