1. 索引
索引支持查詢的有效地提高效率,沒有索引,MongoDB必須掃描集合的每個檔案,以選擇與查詢陳述句匹配的檔案,這種掃描效率很低,需要MongoDB處理大量的資料,
索引是特殊的資料結構,以易于遍歷的形式存盤資料集的一小部分, 索引存盤特定欄位或一組欄位的值,按照索引中指定的欄位值排序,
1.1 索引案例
首先創建大量資料,
向集合中插入10萬條檔案,
for(i=0;i<100000;i++){ db.t1.insert({name:'test'+i, age:i}) }
然后進行資料查找性能分析,
查找姓名為'test10000'的檔案,
db.t1.find({name:'test10000'})
使用explain()命令進行查詢性能分析,
db.t1.find({name:'test10000'}).explain('executionStats')
其中的executionStats下的executionTimeMillis表示整體查詢時間,單位是毫秒,
性能分析結果如下:

然后我們創建索引,
1表示升序,-1表示降序,
db.集合.ensureIndex({屬性:1})
如
db.t1.ensureIndex({name:1})
執行上面相同的查詢,并進行查詢性能分析,
db.t1.find({name:'test10000'}).explain('executionStats')
性能分析結果如下:

1.2 ensureIndex()方法
創建索引,需要使用MongoDB的ensureIndex()方法,
語法:
db.COLLECTION_NAME.ensureIndex({KEY:1})
這里的key是要在其上創建索引的欄位的名稱,
ensureIndex()方法也接受選項串列(可選),
以下是串列:
|
引數 |
型別 |
描述 |
|---|---|---|
|
|
|
在后臺構建索引,以便構建索引不會阻止其他資料庫活動,則指定 |
|
|
|
創建一個唯一的索引,使得集合不會接受索引鍵或鍵匹配索引中現有值的檔案的插入, 指定 |
|
|
|
索引的名稱,如果未指定,則MongoDB通過連接索引欄位的名稱和排序順序來生成索引名稱, |
|
|
|
在可能有重復項的欄位上創建唯一索引,MongoDB僅索引第一次出現的鍵,并從集合中洗掉包含該鍵的后續出現的所有檔案,指定 |
|
|
|
如果為 |
|
|
|
指定一個值(以秒為單位)作為 |
|
|
索引版本 |
索引版本號,默認索引版本取決于創建索引時運行的MongoDB的版本, |
|
|
檔案 |
權重是從 |
|
|
|
對于文本索引,確定停止詞串列的語言以及句柄和分詞器的規則, 默認值為英文, |
|
|
|
對于文本索引,要指定檔案中包含覆寫默認語言的欄位名稱,默認值為 |
1.3 索引的命令
建立唯一所有,實作唯一約束的功能,
db.t1.ensureIndex({"name":1},{"unique":true})
聯合所有,對多個屬性建立一個索引,按照find()出現的順序,
db.t1.ensureIndex({name:1,age:1})
查看檔案所有索引,
db.t1.getIndexes()
查看集合索引大小,
db.t1.totalIndexSize()
洗掉索引,
db.ti.dropIndexes('索引名稱')
洗掉集合所有索引,
db.t1.dropIndexes()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/26225.html
標籤:NoSQL
下一篇:mongodb 基礎入門教程
