文章出處

MongoDB中的索引和其他數據庫索引類似,也是使用B-Tree結構。mongodb的索引是在collection級別上的,并且支持在任何列或者集合內的文檔的子列中創建索引。

 

所有的MongoDB集合默認都有一個唯一索引在字段“_id”上,如果應用程序沒有為 “_id”列定義一個值,MongoDB將創建一個帶有ObjectId值的列。(ObjectId是基于 時間、計算機ID、進程ID、本地進程計數器 生成的)

MongoDB 同樣支持在一列或多列上創建升序或降序索引。

MongoDB還可以創建 多鍵索引、數組索引、空間索引、text索引、哈希索引,其屬性可以是唯一性索引、稀疏性索引、TTL(time to live)索引。

 

索引的限制:

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

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

復合索引不能超過31列

 

基本命令:

>db.tab.ensureIndex({"name":1},{"name":"IX_name"},{"unique":true}) //創建索引名字叫IX_name的唯一索引

>db.tab.getIndexes() //查看所有索引

>db.tab.dropIndexes() //刪除所有索引

>db.tab.find({"name":"test"}).explain("executionStats") //執行結果分析 關注輸出的如下數值:explain.executionStats.executionTimeMillis 耗時毫秒

>db.tab.find({"name":"test"}).hint({"name":1}).explain("executionStats") //執行結果分析 索引提示,強制使用索引

 

其他常用命令:

db.tab.ensureIndex({"id":1})     //創建單列索引
db.collection.createIndex( { "filed": sort } )    //filed :為鍵列
db.collection.createIndex( { "filed": sort , "filed2": sort } )    //sort :為排序。1 為升序;-1為降序。

db.system.indexes.find()    //查看索引

db.tab.totalIndexSize();    //查看索引大小

db.tab.reIndex()    //重建索引
db.runCommand({reIndex:"tab"})

db.tab.dropIndex(<indexname>)    //刪除索引
db.tab.dropIndex("id_1")    //<indexname>為getIndexes看到的索引名稱
db.tab.dropIndexes()    //刪除所有索引(注意!)

 

參考資料:http://www.runoob.com/mongodb/mongodb-indexing.html


文章列表


不含病毒。www.avast.com
全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()