MongoDB索引,性能分析


索引的限制:

索引名稱不能超過128個字符

每個集合不能超過64個索引

復合索引不能超過31列

 

 

 

MongoDB 索引語法

db.collection.createIndex({ <field>: < 1 or -1 > })

db.collection.ensureIndex({ <field>: < 1 or -1 > })

 

db.collection.createIndex( { "filed": sort } )

db.collection.createIndex( { "filed": sort , "filed2": sort } )

 

db.tab.ensureIndex({"id":1})

db.tab.ensureIndex({"id":1} ,{ name:"id_ind"})

db.tab.ensureIndex({"id":1,"name":1},{background:1,unique:1})

db.tab.ensureIndex( { "id" : "hashed" })

 

創建索引(兩種方法)

 

 

filed :為鍵列

sort :為排序。1 為升序;-1為降序。

 

創建單列索引

創建索引並給定索引名稱

后台創建唯一的復合索引

創建哈希索引

 (更多參數 看文章底部)

db.tab.indexStats( { index: "id_ind" } )

db.runCommand( { indexStats: "tab", index: "id_ind" } )

db.tab.getIndexes()

db.system.indexes.find()

(前2個似乎不能用,官方文檔解釋)

(not intended for production deployments)

查看索引

db.tab.totalIndexSize();

查看索引大小

db.tab.reIndex()

db.runCommand({reIndex:"tab"})

重建索引

db.tab.dropIndex(<indexname>)

db.tab.dropIndex("id_1")

db.tab.dropIndexes()

刪除索引

<indexname>為getIndexes看到的索引名稱

刪除所有索引(注意!)

 

 

分析函數

db.tab.find({"name":"kk50000"}).explain()

查詢name=”kk50000”的執行分析

db.tab.find({"name":"kk50000"}).explain("queryPlanner")

db.tab.find({"name":"kk50000"}).explain("Verbosity")

db.tab.find({"name":"kk50000"}).explain("executionStats")

db.tab.find({"name":"kk50000"}).explain("allPlansExecution")

這3種方法執行結果完全包括上面這種的結果

db.tab.find({"name":"kk50000"}).explain()  結果做分析:

"cursor" : "BasicCursor",

"isMultiKey" : false,

"n" : 1,

"nscannedObjects" : 966423,

"nscanned" : 966423,

"nscannedObjectsAllPlans" : 966423,

"nscannedAllPlans" : 966423,

"scanAndOrder" : false,

"indexOnly" : false,

"nYields" : 7555,

"nChunkSkips" : 0,

"millis" : 4677,

"server" : "kk-ad:27017",

"filterSet" : false

游標類型。BasicCurso(掃描), BtreeCursor(索引)

是否多鍵(組合)索引

返回行數

掃描行數

掃描行數

所有計划掃描的次數

所有計划掃描的次數

是否在內存中排序

 

 

 

耗時(毫秒)

服務器

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM