1. 索引索引支持查詢的有效地提高效率。沒有索引,MongoDB必須掃描集合的每個文檔,以選擇與查詢語句匹配的文檔。這種掃描效率很低,需要MongoDB處理大量的數(shù)據(jù)。 索引是特殊的數(shù)據(jù)結(jié)構(gòu),以易于遍歷的形式存儲數(shù)據(jù)集的一小部分。 索引存儲特定字段或一組字段的值,按照索引中指定的字段值排序。 1.1 索引案例首先創(chuàng)建大量數(shù)據(jù)。 向集合中插入10萬條文檔。 for(i=0;i<100000;i++){ db.t1.insert({name:'test'+i, age:i}) } 然后進(jìn)行數(shù)據(jù)查找性能分析。 查找姓名為'test10000'的文檔。 db.t1.find({name:'test10000'}) 使用explain()命令進(jìn)行查詢性能分析。 db.t1.find({name:'test10000'}).explain('executionStats') 其中的executionStats下的executionTimeMillis表示整體查詢時間,單位是毫秒。 性能分析結(jié)果如下:
然后我們創(chuàng)建索引。 1表示升序,-1表示降序。 db.集合.ensureIndex({屬性:1}) 如 db.t1.ensureIndex({name:1}) 執(zhí)行上面相同的查詢,并進(jìn)行查詢性能分析。 db.t1.find({name:'test10000'}).explain('executionStats') 性能分析結(jié)果如下:
1.2 ensureIndex()方法創(chuàng)建索引,需要使用MongoDB的ensureIndex()方法。 語法: db.COLLECTION_NAME.ensureIndex({KEY:1}) 這里的key是要在其上創(chuàng)建索引的字段的名稱。 ensureIndex()方法也接受選項(xiàng)列表(可選)。 以下是列表:
1.3 索引的命令建立唯一所有,實(shí)現(xiàn)唯一約束的功能。 db.t1.ensureIndex({"name":1},{"unique":true})
聯(lián)合所有,對多個屬性建立一個索引,按照find()出現(xiàn)的順序。 db.t1.ensureIndex({name:1,age:1}) 查看文檔所有索引。 db.t1.getIndexes() 查看集合索引大小。 db.t1.totalIndexSize() 刪除索引。 db.ti.dropIndexes('索引名稱') 刪除集合所有索引。 db.t1.dropIndexes() |
|