三、索引的效率
MongoDB的索引到底能不能提高查询效率呢?我们在这里通过一个例子来测试。比较同样的数据在无索引和有索引的情况下的查询速度。
首先,我们通过这样一个方法插入10W条数据:
- public void InsertBigData()
- {
- var random = new Random();
- for (int i = 1; i < 100000; i++)
- {
- Document doc = new Document();
- doc["ID"] = i;
- doc["Data"] = "data" + random.Next(100000);
- mongoCollection.Save(doc);
- }
- Console.WriteLine("当前有" + mongoCollection.FindAll().Documents.Count() + "条数据");
- }
然后,实现一个方法用来创建索引:
- public void CreateIndexForData()
- {
- mongoCollection.Metadata.CreateIndex(new Document { { "Data", 1 } }, false);
- }
还有排序的方法:
- public void SortForData()
- {
- mongoCollection.FindAll().Sort(new Document { { "Data", 1 } });
- }
运行测试代码如下:
- static void Main(string[] args)
- {
- IndexBLL indexBll = new IndexBLL();
- indexBll.DropAllIndex();
- indexBll.DeleteAll();
- indexBll.InsertBigData();
- Stopwatch watch1 = new Stopwatch();
- watch1.Start();
- for (int i = 0; i < 1; i++) indexBll.SortForData();
- Console.WriteLine("无索引排序执行时间:" + watch1.Elapsed);
- indexBll.CreateIndexForData();
- Stopwatch watch2 = new Stopwatch();
- watch2.Start();
- for (int i = 0; i < 1; i++) indexBll.SortForData();
- Console.WriteLine("有索引排序执行时间:" + watch2.Elapsed);
- }
最后执行程序查看结果:

多次测试表明在有索引的情况下,查询效率要高于无索引的效率。
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。