首頁 > 軟體

mongoDB資料庫索引快速入門指南

2022-03-23 16:01:10

MongoDB 索引

索引通常能夠極大的提高查詢的效率,如果沒有索引,MongoDB在讀取資料時必須掃描集合中的每個檔案並選取那些符合查詢條件的記錄。

這種掃描全集合的查詢效率是非常低的,特別在處理大量的資料時,查詢可以要花費幾十秒甚至幾分鐘,這對網站的效能是非常致命的。

索引是特殊的資料結構,索引儲存在一個易於遍歷讀取的資料集合中,索引是對資料庫表中一列或多列的值進行排序的一種結構。

mongo可以通過建立索引來提高查詢的速度。

1. 開始與準備資料

啟動mongo並選擇目標資料庫

mongo

use test

然後準備一組資料(10萬條資料,較大的資料量)

for(i=0;i<100000;i++){db.test.insert({name:'test'+i,age:i})}

2. 建立索引前

查詢一下name為"test90000"的資料。並使用explain方法來檢視查詢的效能。

db.test1.find({name:"test90000"}).explain('executionStats')

這裡可以看到查詢花了53毫秒

3. 建立索引 createIndex

給欄位name建立索引

db.test1.createIndex({name: 1})

檢視索引:

給name建立索引之前,_id欄位預設為索引,建立後集合有兩個索引,"_id"和"name"。

4. 建立索引後

再次查詢該條資料,並檢視查詢的效能,發現所用時間接近0毫秒。即設定索引後查詢效能大大提升了。

db.test1.find({name:"test90000"}).explain('executionStats')

5. 刪除索引

db.test1.dropIndex({name:1})

檢視之

db.test1.getIndexes()

如圖,只剩下了"_id"一個索引。"name"索引已被刪除。

6.唯一索引與符合索引

①唯一索引

db.test1.createIndex({name: 1},{"unique":true})

檢視索引

db.test1.getIndexes()

可以看到,unique為true。

設定為唯一索引後,該索引的值不能重複。
(這個特點也可以用於寫爬蟲時不想要某欄位的重複資料時,達到去重的目的。)

如圖插入一條name重複的資料時,會產生如下報錯:

即插入失敗了。

②複合索引

建立多個索引的方式被稱為複合索引。

首先刪掉剛剛建立的索引name

db.test1.dropIndex({name:1})

然後一次建立name,age兩個索引

db.test1.createIndex({'name':1,'age':1})

處理海量資料時,在一定的規則下使用複合索引,可以大幅提升查詢的效能.

到此這篇關於mongoDB資料庫索引快速入門指南的文章就介紹到這了,更多相關mongoDB索引內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com