C# MongoDB-第一次获取比SQL花费更多的时间

C# MongoDB-第一次获取比SQL花费更多的时间,c#,asp.net,mongodb,C#,Asp.net,Mongodb,我在我的项目中使用mongodb来减少时间,同时比较从SQL和NoSQL中获取数据所花费的时间,每个获取表单数据库SQL需要50毫秒,而NoSQL第一次大约需要180毫秒,其他获取需要15毫秒,如何在NoSQL中第一次减少抓取时间。尝试为集合创建索引,使查询运行更快 第一个查询可能会花费更多的时间,因为它会将工作集加载到RAM中。有关工作集的详细信息可在此处找到: 为了避免此问题,您可能希望在任何实际用户访问数据库之前预加载此文件。我能想到的一种方法是每小时(或您认为合适的任何频率)一次的c

我在我的项目中使用mongodb来减少时间,同时比较从SQL和NoSQL中获取数据所花费的时间,每个获取表单数据库SQL需要50毫秒,而NoSQL第一次大约需要180毫秒,其他获取需要15毫秒,如何在NoSQL中第一次减少抓取时间。

尝试为集合创建索引,使查询运行更快

第一个查询可能会花费更多的时间,因为它会将工作集加载到RAM中。有关工作集的详细信息可在此处找到:


为了避免此问题,您可能希望在任何实际用户访问数据库之前预加载此文件。我能想到的一种方法是每小时(或您认为合适的任何频率)一次的cron,它每小时进行一次查询,以将工作集加载到内存中,以便更快地进行后续查询。

您能告诉我们更多关于数据量、文档数量和查询(如何获取文档)的信息吗?如果您希望我们告诉您如何加快查询速度,您需要告诉我们您正在运行哪些查询…@amit_saxena我的收藏有108条记录。我使用下面的查询来获取记录<代码>IMongoQuery query=新建查询文档();query=query.And(query,query.EQ(“Field1”,1));MongoCollection collectionAC=MongoDBs.GetCollection(“CollectionName”);var Log=collectionAC.FindAs(query).SetFields(Fields.Exclude(dyFields)).ToList()@Sammaye这是我的文档结构<代码>{AC:{A_C_N:“工作”,“Ast_文件名”:“untitled.bmp”,“A_Sts:”0,“A_Active:”True”,“M_Size:”-1,“S_Descr:”description“},“AC_Sk:”20,“Asts:”[{“Ast Name:”Testing“}],“\u id:”ObjectId(“51aa93ee6f9a0bbcab0886”)}@Gavruk我已经用unique:True给出了索引。我的查询只在第一次提取时使用了这段时间。可能您的数据没有加载到内存中。在第一次查询之后,MongoDB将数据加载到内存中,接下来的查询将成为work fasterHi@amit,我是否需要在我的配置文件中添加任何配置设置,
dbpath、logpath和logappend
这是我的配置中现在给出的设置。为了让我的db将其工作集加载到RAM中,我必须做些什么。正如我所说,您可以有一个周期性的cronjob,它触发类似的查询并将工作集加载到RAM中。Hi@amit,正如您所说,我在另一个页面加载中进行了相同的查询(即,在page_1.aspx中给定了相同的查询),即使我的页面选择(即,current_page.aspx)第一次需要更多的时间,如第1.aspx页所述。可能是什么问题,请指导我继续。时间是我的标准。嗨@amit,也为您参考,我给出了下面我使用的代码。请尽可能减少获取时间。下面是代码
public string GAST(){string json=“”;var Logs=new List();IMongoQuery query query=new QueryDocument();string[]dyFlds=new string[]{u id”,“Asts.UId”};query=query.And(query,query.EQ(“AC”),MongoDBs.RequestStart();MongoCollection collectionAC=MongoDBs.GetCollection(“AstC”);Logs=collectionAC.FindAsquery).SetFields(Fields.Exclude(dyFlds)).ToList();if(Logs.Count!=0){BsonDocument doc=Logs[0];json=docAsset[0].ToString();}MongoDBs.RequestDone();return json;}