フィールド「Base.UserID」で5000万以上のドキュメントと一意でないインデックスを取得しましたレプリカセットと接続文字列の2つのmongoサーバー:
<add name="MongoConnectionString" connectionString="mongodb://mango1,mango2:27017" />
インデックス被保険者:
var eventCollection = Collection<EventMongo>();
eventCollection.EnsureIndex(IndexKeys.Ascending("Base.UserID"), IndexOptions.SetName("Event.Base.UserID"));
それから私は見つけます
var _Set = new SortedSet<Int64>();
using (var db = new BaseDataAccess())
{
var col = db.Collection<EventMongo>();
var counter = 0;
var query = Query.And(
Query.EQ("Base.UserID", UserID),
Query.EQ("Base.Visible", 1)
);
var _docs = col.Find(query);
_docs.SetFields(new[] {"SQLId"});
_docs.SetSortOrder(SortBy.Descending("SQLId"));
_docs.SetLimit(HowMany);
int i = 0;
foreach (var doc in _docs)
{
var _EventID = doc.SQLId;
_Set.Add(_EventID);
if (++counter >= HowMany) break;
}
}
return _Set;
同じドキュメントには並列 MS SQL db が含まれており、MongoDB への読み取りの最初のクエリは MS SQL よりも時間がかかる (最大 5 秒) ことを述べています。(同じ UserID での 2 回目のヒットは高速です)