私は、ニュースレターの活動に関するレポートを生成するためにmapreduceを実行しています。私が使用して、特定のニュースレターにレポートを実行するにクエリに含まれるMongoDBのタイムアウト!==
:
var query = Query.And(
Query.EQ("NewsletterId", BsonInt32.Create(newsletterId)),
Query.GTE("DateAdded", BsonDateTime.Create(startDate)).LTE(BsonDateTime.Create(endDate))
);
私は今同じのMapReduceを使用して(ニュースレターのすべての電子メール・アクティビティの集計レポートを取得できるようにしたいが、ちょうど変更クエリ)。このために私が使用します。
var query = Query.And(
Query.Where(new BsonJavaScript("this.NewsletterId !== null")),
Query.GTE("DateAdded", BsonDateTime.Create(startDate)).LTE(BsonDateTime.Create(endDate))
);
は私が最初のクエリで使用されていると思うNewsletterIdとDateAddedを含み、インデックスセットを持っていますが、タイムアウトにそれを引き起こしているではない2つ目。
クエリがタイムアウトしないように最適化を行うことはできますか?
これより小さいか等しいと、ほとんどすべての場合で同じではないよりもスキャンするレコードが少なくなります。最初のクエリはどのくらいの期間、結果を提供するのにかかるか、2番目のクエリのタイムアウトはどれくらいですか? –