[英]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.