在“Base.UserID”字段上获得了 50+ 百万个文档和非唯一索引副本集和连接字符串中的两个 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 数据库,我提到第一个读取 MongoDB 的查询比 MS SQL 需要更多的时间(最多 5 秒)!(同一个UserID的第二次命中速度更快)