1.目的
索引就是用來加速查詢的。數據庫索引與書籍的索引類似:有了索引就不需要翻遍整本書,數據庫則可以直接在索引中查找,使得查找速度能提高幾個數量級。在索引中找到條目以後,就可以直接跳轉到目標文檔的位置。
2.創建普通索引
使用命令 db.collection.ensureIndex({key:1})
3.查看關於索引的相關信息
使用命令 db.collection.stats()
4.查看查詢使用索引的情況
使用命令 db.collection.find({key:value}).explain()
explain是非常有用的工具,會幫助你獲得查詢方面諸多有用的信息。只要對游標調用該方法,就可以得到查詢細節。explain會返回一個文檔,而不是游標本身。如:
> db.test.find().explain() { "cursor" : "BasicCursor", "nscanned" : 1, "nscannedObjects" : 1, "n" : 1, "millis" : 0, "nYields" : 0, "nChunkSkips" : 0, "isMultiKey" : false, "indexOnly" : false, "indexBounds" : { } }
explain會返回查詢使用的索引情況,耗時和掃描文檔數的統計信息。
"cursor":"BasicCursor"表示沒有使用索引。
"nscanned":1 表示查詢了多少個文檔。
"n":1 表示返回的文檔數量。
"millis":0 表示整個查詢的耗時。
5.刪除索引
使用命令 db.collection.dropIndex({key:1})
注:刪除集合也會將集合中的索引全部刪除
6.創建唯一索引
使用命令 db.collection.ensureIndex({key:1}