mongodb學習 索引詳解

2022-04-07 11:26:56 字數 1337 閱讀 7047

這篇部落格將會給大家**mongodb索引的詳細學習,包括了索引管理和空間索引。索引是用來增加我們的查詢效率的,關係型資料庫和非關係型資料庫都有索引的功能,在某乙個字段或者是鍵上新增索引,那麼當查詢該欄位或者是鍵的時候,會提公升很大的效率。

首先看看沒有建立索引之前的情況:

可以看到,這裡我首先為persons的集合中新增了20萬條資料,然後利用:

db.persons.find().explain()來計算查詢第8萬條資料所需要的時間,可以看到,這裡是消耗了101毫秒。速度還是可以的。

接下來,我為persons集合的id鍵建立索引,在mongodb中為我們提供了乙個方法:

db.集合名稱.ensureindex()

這裡1表示建立公升序的索引,-1表示建立降序的索引

在建立索引以後的時間變為幾乎為0毫秒了,還是大大大的提高了查詢效率

注意:使用索引可以提高我們的查詢效率,可是會影響我們的插入和更改的效率,因為在插入和更改的時候是會維護該索引的,對於更新較少查詢較多的集合可以使用索引。

檢視索引

db.persons.getindexes()可以看到這裡有兩個索引,乙個是系統缺省會建立乙個」_id」索引,另外乙個就是我們自己建立的」number_id」,可以看到這裡的索引名稱和 我們的鍵值預設是相同的,如果我需要建立自己的索引名稱,比如我為name建立乙個叫做」personname」的索引,可以這樣寫:

db.persons.ensureindex(,)現在,我們的persons集合中有三個索引了,可以看到第三個name索引的名稱就是我們自己給的」personname」

db.persons.ensureindex(,)好了,已經為name鍵建立了乙個降序的唯一索引,那麼我們在試著插入一條name=」aname0」的記錄

此時會插入失敗,系統提示我們該name鍵已經建立了唯一索引

如果我們在建立唯一索引之前,在需要建立唯一索引的鍵上已經存在重複值。可以利用下面**去除已經存在的重複值:

db.persons.ensureindex(,)

如果我的集合中建立了好幾個索引,我需要使用某乙個索引,可以通過在find()後面加上hint(),來實現使用指定的索引。

注意:指定的索引必須提前存在,不然會查詢失敗。

系統為我們提供了乙個system.indexex集合,裡邊儲存的是所有集合中建立的索引:

在資料量很大的時候,建立索引是需要耗費一段時間的,在建立索引的過程中,會將集合鎖住,完成之後會將集合解鎖,這段時間我們不能對集合做任何操作,此時可以建立非同步索引。

db.persons.ensureindex(,)刪除單個索引

db.runcommand()刪除所有索引

db.runcommand()關於索引的學習就到這裡了。

MongoDB學習 索引

一 索引基礎 mongodb的索引幾乎與傳統的關係型資料庫一模一樣,這其中也包括一些基本的優化技巧。下面是建立索引的命令 db.test.ensureindex 可以通過下面的名稱檢視索引是否已經成功建立 db.test.getindexes 刪除索引的命令是 db.test.dropindex 在...

MongoDB學習筆記 索引

一 索引基礎 mongodb的索引幾乎與傳統的關係型資料庫一模一樣,這其中也包括一些基本的優化技巧。下面是建立索引的命令 db.test.ensureindex 可以通過下面的名稱檢視索引是否已經成功建立 db.test.getindexes 刪除索引的命令是 db.test.dropindex 在...

MongoDB學習筆記 索引

一 索引基礎 mongodb的索引幾乎與傳統的關係型資料庫一模一樣,這其中也包括一些基本的優化技巧。下面是建立索引的命令 db.test.ensureindex 可以通過下面的名稱檢視索引是否已經成功建立 db.test.getindexes 刪除索引的命令是 db.test.dropindex 在...