mongodb中的索引:
????????索引提高查詢速度,降低寫入速度,權衡常用的查詢字段,不必在太多列上建索引
????????在mongodb中,索引可以按字段升序/降序來創建,便于排序。mongodb默認是用btree來組織索引文件,2.4版本以后,也允許建立hash索引.
查看查詢計劃:
查看索引:
創建索引:
? ??????創建多列索引
????????db.collection.ensureIndex({field1:1/-1, field2:1/-1});
????????創建子文檔索引
????????db.collection.ensureIndex({filed.subfield:1/-1});
? ??????創建唯一索引:
????????db.collection.ensureIndex({filed.subfield:1/-1}, {unique:true});
? ??????創建稀疏索引:
????????稀疏索引的特點------如果針對field做索引,針對不含field列的文檔,將不建立索引.與之相對,普通索引,會把該文檔的field列的值認為NULL,并建索引.適宜于:小部分文檔含有某列時.
? ??????db.collection.ensureIndex({field:1/-1},{sparse:true});
? ??????db.tea.find();
????????{ "_id" : ObjectId("5275f99b87437c610023597b"), "email" : "a@163.com" }
????????{ "_id" : ObjectId("5275f99e87437c610023597c"), "email" : "b@163.com" }
????????{ "_id" : ObjectId("5275f9e887437c610023597e"), "email" : "c@163.com" }
????????{ "_id" : ObjectId("5275fa3887437c6100235980") }
? ??????如上內容,最后一行沒有email列,如果分別加普通索引,和稀疏索引,對于最后一行的email分別當成null 和 忽略最后一行來處理.根據{email:null}來查詢,前者能查到,而稀疏索引查不到最后一行.
? ??????創建哈希索引(2.4新增的)
????????哈希索引速度比普通索引快,但是,無能對范圍查詢進行優化.適宜于---隨機性強的散列 db.collection.ensureIndex({file:’hashed’});
? ??????重建索引:
????????一個表經過很多次修改后,導致表的文件產生空洞,索引文件也如此.可以通過索引的重建,減少索引文件碎片,并提高索引的效率.類似mysql中的optimize table
? ??????db.collection.reIndex()
刪除索引:
????????刪除單個索引? ? ? ??
????????刪除所有索引
????????db.collection.dropIndexes();