通常mongodb中的索引的建立方式如下:
這種方式下,已經排好順序了,所以只要在排好序的key中找滿足查詢條件的記錄即可,需要掃瞄的資料量比較大,還有一種索引的建立方式:
這種建立的方式中,不需要掃瞄很多的記錄,在索引中查詢滿足條件的記錄,但是需要在記憶體中排序,如果滿足記錄的條件很多,就要消耗很多的時間去排序,可能會很慢,通常查詢是帶limit的,所以第一種方式可能也無需掃瞄太多的記錄就能返回正常的記錄,可能效率可能會更高。
explan輸出中scanandsort代表了,索引查詢後,在記憶體中有排序操作
nscannedobject代表的是根據索引的指標去實際查詢物件的數量
nscanned代表掃瞄索引條目數量
indexonly是否只用索引就返回了滿足的查詢,無需在回表操作
n代表返回的文件數量
nyields代表為了讓寫操作順利進行,本次查詢暫停的次數
allplans代表的是本次查詢嘗試的每個查詢計畫
可以使用hint提示使用哪種索引
如果只是單鍵值的查詢,那麼公升序降序是不太緊要的,mongodb可以利用同乙個索引順序或逆序的遍歷,索引鍵只需要在復合索引上使用。
hint使用方式
db.c.find().hint(「username」:1,」age」:1})
建立唯一索引
db.user.createindex(,)
大於8kb的字段是不會被新增到索引中的,建立索引的時候也不會有任何提示
在建立索引的時候,可以指定索引名稱,預設是索引欄位的組合,當索引欄位過多的時候會出現問題
db.user.createindex(,)
mongodb中建立索引會阻塞讀寫,這個操作要慎重了,可以指定background選項,但是仍會有很大的影響
MongoDB中的索引簡單介紹!
索引 是幾乎所有資料庫都有的概念。資料庫的 索引 可以看作是書籍的 目錄 db.ensure 在username上建立索引沒有索引時,如果我們要在整個集合中查詢符合條件的文件,就只能乙個文件乙個文件地去掃瞄 即 全表掃瞄 當集合非常大時,這總全表掃瞄的方式就會變得十分低效。而有了索引之後,我們就不需...
二 MongoDB的基本操作之索引
一 索引的種類 二 查詢索引 1 查詢集合中所有索引 db.imooc collection.getindexes 三 索引屬性 1 建立索引時的格式 db.collection.ensureindex 第2個引數便是對應的屬性。2 比較重要的屬性 1 名字,name指定 db.collection...
mongodb的索引相關
最近開始使用mongodb,用了一段時間後,發現有索引的需求。就把學習和使用過程寫下來。先使用mongodb的shell模式,然後再用python通過pymongo使用來試試。新建索引 db.collection.createindex 如 db.collection.createindex 索引型...