簡體   English   中英

MongoDB數百萬行的計數非常慢

[英]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存儲您的計算服務結果,也可以使用更特定的解決方案: 服務總線 (即RabbitMQAzure Service BusNServiceBus ...)。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM