成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > MongoDB索引使用詳解

MongoDB索引使用詳解

熱門標(biāo)簽:智能電銷機器人銷售話術(shù) 徐州ai電銷機器人原理 企業(yè)智能外呼系統(tǒng)價格多少 福州電銷機器人源代碼 機器人外呼系統(tǒng)軟件存在問題 南京400電話怎樣辦理 高德地圖標(biāo)注商戶位置 沈陽營銷電銷機器人招商 兗州電話外呼營銷系統(tǒng)

索引就像書的目錄,如果查找某內(nèi)容在沒有目錄的幫助下,只能全篇查找翻閱,這導(dǎo)致效率非常的低下;如果在借助目錄情況下,就能很快的定位具體內(nèi)容所在區(qū)域,效率會直線提高。

索引簡介

首先打開命令行,輸入mongo。默認(rèn)mongodb會連接名為test的數(shù)據(jù)庫。

➜ ~ mongo
MongoDB shell version: 2.4.9
connecting to: test
> show collections
> 

可以使用show collections/tables查看數(shù)據(jù)庫為空。

然后在mongodb命令行終端執(zhí)行如下代碼

> for(var i=0;i100000;i++) {
... db.users.insert({username:'user'+i})
... }
> show collections
system.indexes
users
> 

再查看數(shù)據(jù)庫發(fā)現(xiàn)多了system.indexes 和 users兩個表,前者即所謂的索引,后者為新建的數(shù)據(jù)庫表。
這樣user表中即有了10萬條數(shù)據(jù)。

> db.users.find()
{ "_id" : ObjectId("5694d5da8fad9e319c5b43e4"), "username" : "user0" }
{ "_id" : ObjectId("5694d5da8fad9e319c5b43e5"), "username" : "user1" }
{ "_id" : ObjectId("5694d5da8fad9e319c5b43e6"), "username" : "user2" }
{ "_id" : ObjectId("5694d5da8fad9e319c5b43e7"), "username" : "user3" }
{ "_id" : ObjectId("5694d5da8fad9e319c5b43e8"), "username" : "user4" }
{ "_id" : ObjectId("5694d5da8fad9e319c5b43e9"), "username" : "user5" }

現(xiàn)在需要查找其中任意一條數(shù)據(jù),比如

> db.users.find({username: 'user1234'})
{ "_id" : ObjectId("5694d5db8fad9e319c5b48b6"), "username" : "user1234" }

發(fā)現(xiàn)這條數(shù)據(jù)成功找到,但需要了解詳細信息,需要加上explain方法

> db.users.find({username: 'user1234'}).explain()
{
  "cursor" : "BasicCursor",
  "isMultiKey" : false,
  "n" : 1,
  "nscannedObjects" : 100000,
  "nscanned" : 100000,
  "nscannedObjectsAllPlans" : 100000,
  "nscannedAllPlans" : 100000,
  "scanAndOrder" : false,
  "indexOnly" : false,
  "nYields" : 0,
  "nChunkSkips" : 0,
  "millis" : 30,
  "indexBounds" : {
    
  },
  "server" : "root:27017"
}

參數(shù)很多,目前我們只關(guān)注其中的"nscanned" : 100000和"millis" : 30這兩項。

nscanned表示mongodb在完成這個查詢過程中掃描的文檔總數(shù)??梢园l(fā)現(xiàn),集合中的每個文檔都被掃描了,并且總時間為30毫秒。

如果數(shù)據(jù)有1000萬個,如果每次查詢文檔都遍歷一遍。呃,時間也是相當(dāng)可觀。

對于此類查詢,索引是一個非常好的解決方案。

> db.users.ensureIndex({"username": 1})

然后再查找user1234

> db.users.ensureIndex({"username": 1})
> db.users.find({username: 'user1234'}).explain()
{
  "cursor" : "BtreeCursor username_1",
  "isMultiKey" : false,
  "n" : 1,
  "nscannedObjects" : 1,
  "nscanned" : 1,
  "nscannedObjectsAllPlans" : 1,
  "nscannedAllPlans" : 1,
  "scanAndOrder" : false,
  "indexOnly" : false,
  "nYields" : 0,
  "nChunkSkips" : 0,
  "millis" : 0,
  "indexBounds" : {
    "username" : [
      [
        "user1234",
        "user1234"
      ]
    ]
  },
  "server" : "root:27017"
}

的確有點不可思議,查詢在瞬間完成,因為通過索引只查找了一條數(shù)據(jù),而不是100000條。

當(dāng)然使用索引是也是有代價的:對于添加的每一條索引,每次寫操作(插入、更新、刪除)都將耗費更多的時間。這是因為,當(dāng)數(shù)據(jù)發(fā)生變化時,不僅要更新文檔,還要更新級集合上的所有索引。因此,mongodb限制每個集合最多有64個索引。通常,在一個特定的集合上,不應(yīng)該擁有兩個以上的索引。

小技巧

如果一個非常通用的查詢,或者這個查詢造成了性能瓶頸,那么在某字段(比如username)建立索引是非常好的選擇。但只是給管理員用的查詢(不太在意查詢耗費時間),就不該對這個字段建立索引。

復(fù)合索引

索引的值是按一定順序排列的,所以使用索引鍵對文檔進行排序非??臁?/p>

db.users.find().sort({'age': 1, 'username': 1})

這里先根據(jù)age排序再根據(jù)username排序,所以username在這里發(fā)揮的作用并不大。為了優(yōu)化這個排序,可能需要在age和username上建立索引。

db.users.ensureIndex({'age':1, 'username': 1})
這就建立了一個復(fù)合索引(建立在多個字段上的索引),如果查詢條件包括多個鍵,這個索引就非常有用。

建立復(fù)合索引后,每個索引條目都包括一個age字段和一個username字段,并且指向文檔在磁盤上的存儲位置。
此時,age字段是嚴(yán)格升序排列的,如果age相等時再按照username升序排列。

查詢方式

點查詢(point query)

用于查詢單個值(盡管包含這個值的文檔可能有多個)

db.users.find({'age': 21}).sort({'username': -1})

因為我們已經(jīng)建立好復(fù)合索引,一個age一個username,建立索引時使用的是升序排序(即數(shù)字1),當(dāng)使用點查詢查找{age:21},假設(shè)仍然是10萬條數(shù)據(jù),可能年齡是21的很多人,因此會找到不只一條數(shù)據(jù)。然后sort({'username': -1})會對這些數(shù)據(jù)進行逆序排序,本意是這樣。但我們不要忘記建立索引時'username':1是升序(從小到大),如果想得到逆序只要對數(shù)據(jù)從最后一個索引開始,依次遍歷即可得到想要的結(jié)果。

排序方向并不重要,mongodb可以從任意方向?qū)λ饕M行遍歷。
綜上,復(fù)合索引在點查詢這種情況非常高效,直接定位年齡,不需要對結(jié)果進行排序,返回結(jié)果。

多值查詢(multi-value-query)

db.users.find({'age': {"$gte": 21, "$lte": 30}})

查找多個值相匹配的文檔。多值查詢也可以理解為多個點查詢。
如上,要查找年齡介于21到30之間。monogdb會使用索引的中的第一個鍵"age"得到匹配的結(jié)果,而結(jié)果通常是按照索引順序排列的。

db.users.find({'age': {"$gte": 21, "$lte": 30}}).sort({'username': 1})

與上一個類似,這次需要對結(jié)果排序。
在沒有sort時,我們查詢的結(jié)果首先是根據(jù)age等于21,age等于22..這樣從小到大排序,當(dāng)age等于21有多個時,在進行usernameA-Z(0-9)這樣排序。所以,sort({'username': 1}),要將所有結(jié)果通過名字升序排列,這次不得不先在內(nèi)存中進行排序,然后返回。效率不如上一個高。

當(dāng)然,在文檔非常少的情況,排序也花費不了多少時間。
如果結(jié)果集很大,比如超過32MB,MongoDB會拒絕對如此多的數(shù)據(jù)進行排序工作。

還有另外一種解決方案

也可以建立另外一個索引{'username': 1, 'age': 1}, 如果先對username建立索引,當(dāng)再sortusername,相當(dāng)沒有進行排序。但是需要在整個文檔查找age等于21的帥哥美女,所以搜尋時間就長了。

但哪個效率更高呢?

如果建立多個索引,如何選擇使用哪個呢?
效率高低是分情況的,如果在沒有限制的情況下,不用進行排序但需要搜索整個集合時間會遠超過前者。但是在返回部分?jǐn)?shù)據(jù)(比如limit(1000)),新的贏家就產(chǎn)生了。

>db.users.find({'age': {"$gte": 21, "$lte": 30}}).
sort({username': 1}).
limit(1000).
hint({'age': 1, 'username': 1})
explain()['millis']
2031ms

>db.users.find({'age': {"$gte": 21, "$lte": 30}}).
sort({username': 1}).
limit(1000).
hint({'username': 1, 'age': 1}).
explain()['millis']
181ms

其中可以使用hint指定要使用的索引。
所以這種方式還是很有優(yōu)勢的。比如一般場景下,我們不會把所有的數(shù)據(jù)都取出來,只是去查詢最近的,所以這種效率也會更高。

索引類型

唯一索引

可以確保集合的每個文檔的指定鍵都有唯一值。

db.users.ensureIndex({'username': 1, unique: true})
比如使用mongoose框架,在定義schema時,即可指定unique: true.
如果插入2個相同都叫張三的數(shù)據(jù),第二次插入的則會失敗。_id即為唯一索引,并且不能刪除。

稀疏索引

使用sparse可以創(chuàng)建稀疏索引

>db.users.ensureIndex({'email': 1}, {'unique': true, 'sparse': true})

索引管理

system.indexes集合中包含了每個索引的詳細信息

db.system.indexes.find()

1.ensureIndex()創(chuàng)建索引

db.users.ensureIndex({'username': 1})
后臺創(chuàng)建索引,這樣數(shù)據(jù)庫再創(chuàng)建索引的同時,仍然能夠處理讀寫請求,可以指定background選項。

db.test.ensureIndex({"username":1},{"background":true})

2.getIndexes()查看索引

db.collectionName.getIndexes()
db.users.getIndexes()
[
  {
    "v" : 1,
    "key" : {
      "_id" : 1
    },
    "ns" : "test.users",
    "name" : "_id_"
  },
  {
    "v" : 1,
    "key" : {
      "username" : 1
    },
    "ns" : "test.users",
    "name" : "username_1"
  }
]

其中v字段只在內(nèi)部使用,用于標(biāo)識索引版本。

3.dropIndex刪除索引

> db.users.dropIndex("username_1")
{ "nIndexesWas" : 2, "ok" : 1 }

全選復(fù)制放進筆記> db.users.dropIndex({"username":1})

您可能感興趣的文章:
  • MongoDB中唯一索引(Unique)的那些事
  • MongoDB的基礎(chǔ)查詢和索引操作方法總結(jié)
  • MongoDB中創(chuàng)建索引需要注意的事項
  • MongoDB性能篇之創(chuàng)建索引,組合索引,唯一索引,刪除索引和explain執(zhí)行計劃
  • 深入理解MongoDB的復(fù)合索引
  • mongodb處理中文索引與查找字符串詳解
  • MongoDB查詢字段沒有創(chuàng)建索引導(dǎo)致的連接超時異常解案例分享
  • 關(guān)于MongoDB索引管理-索引的創(chuàng)建、查看、刪除操作詳解
  • MongoDB自動刪除過期數(shù)據(jù)的方法(TTL索引)
  • 關(guān)于對MongoDB索引的一些簡單理解

標(biāo)簽:本溪 景德鎮(zhèn) 鶴崗 大理 吉安 邯鄲 昭通 丹東

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MongoDB索引使用詳解》,本文關(guān)鍵詞  MongoDB,索引,使用,詳解,MongoDB,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MongoDB索引使用詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于MongoDB索引使用詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产精品69久久久| 一个人免费观看在线视频www| 国产精品自产拍在线网站| 欧美wwwsss9999| av亚洲免费| 欧美一区午夜视频在线观看| 91精品国产综合久久久久久豆腐| 日日噜噜噜噜人人爽亚洲精品| 亚洲欧美日韩精品永久在线| xxxx性bbbb欧美野外| 欧美日韩卡一| 日韩视频在线观看视频| www成人在线| 日韩在线视频免费观看高清中文| 0608新视觉| 91激情视频在线| 久久久噜噜噜久久狠狠50岁| 午夜免费精品视频| 超碰成人免费在线| 亚洲欧美日韩综合网| 国产精品国产自产拍高清av水多| 97在线国产视频| 在线不卡日本v二区707| 亚洲成年人在线播放| 91精品啪aⅴ在线观看国产| 亚洲成人日韩| 一本色道亚洲精品aⅴ| 日韩美女黄色片| 色姑娘资源站| 欧美在线啊v一区| 亚洲国产日韩综合一区| 视频在线国产| 亚洲成人黄色在线观看| 欧美又粗又大又爽| 999在线观看视频| 中国xxxx自拍视频| 欧美二区乱c黑人| 人妻精品无码一区二区| 国产精品亚洲一区二区三区在线观看| 欧美日韩成人在线观看| 蜜桃特黄a∨片免费观看| 久久精品久久久久久国产 免费| 精品久久久久av影院| 一区二区三区四区国产| 日本电影中文字幕| 国产美女在线精品免费观看| a级片免费在线观看| 欧美福利视频在线| 欧美丰满美乳xxⅹ高潮www| 性感美女一区二区三区| 天堂在线国产| 久久97久久97精品免视看秋霞| 欧美特级特黄aaaaaa在线看| 中文字幕在线视频一区| 欧美第一区第二区| 国产一区在线电影| 色综合天天天天做夜夜夜夜做| 国产亲伦免费视频播放| 一卡二卡三卡日韩欧美| 久久国产精品一区二区| 久久99亚洲精品| 99久久99视频只有精品| 香蕉视频国产在线观看| 777777国产7777777| 黑人无套内谢中国美女| 日本天堂在线视频| 视频一区二区三区国产| 欧美成人性生活视频| 三妻四妾完整版在线观看电视剧| 中文字幕第88页| 中文av字幕在线观看| 欧美 中文字幕| 亚洲第一福利专区| 亚洲五月综合| 韩日欧美一区二区三区| 亚洲999一在线观看www| 日韩午夜在线观看| 日韩精品在线免费| 性欧美13一14内谢| 91精品国产91久久久久久最新| 满满都是荷尔蒙韩剧在线观看| 日韩av一卡| 久操视频在线观看免费| 日韩女优在线视频| 欧美freesex8一10精品| 亚洲最大的免费| 国产欧美va欧美va香蕉在| 黄色在线观看视频网站| 国产一区二区99| 国产精品美女免费视频| 91麻豆产精品久久久久久| 国产午夜精品福利| 亚洲欧洲中文日韩久久av乱码| www.99色.com| 亚洲免费观看高清完整版在线观| 亚洲天堂精品在线| 日韩欧美久久久| 欧美黄色三级网站| 男女黄床上色视频| 日韩中文字幕有码| 精品美女在线观看视频在线观看| 91中文精品字幕在线视频| 亚洲综合一区二区精品导航| 一级片视频网站| 91亚洲国产成人久久精品网站| 一区在线播放| 激情丁香综合五月| 亚洲美女在线一区| 麻豆91在线播放| 免费自拍视频| 五月天国产视频| 久久久久亚洲AV成人无码国产| 韩国毛片一区二区三区| 男人艹女人网站| 中文字幕另类日韩欧美亚洲嫩草| 欧美成人一区在线| 日本不卡视频一区| 久久久久久久久久影视| 日韩在线欧美在线| 国产一级片网址| 一区二区三区日韩精品| 欧美激情护士| 女人丝袜激情亚洲| 精品国产av 无码一区二区三区| 中日韩美女免费视频网站在线观看| 国产成人一二片| 成人看的视频| 国产在线观看黄| 日韩欧美成人一区二区三区| 异国色恋浪漫潭| 久久久久久久久久久久久久久国产| 精品国产乱码91久久久久久网站| 另类天堂视频在线观看| 免费看黄色网| 日本不卡的三区四区五区| 国产无套丰满白嫩对白| 国产免费内射又粗又爽密桃视频| 成人影院久久久久久影院| 亚洲男人天堂九九视频| 欧美顶级大胆免费视频| 国产老头和老头xxxx×| 美女啪啪无遮挡免费久久网站| 免费看a级黄色片| 91精品一区二区三区久久久久久| 亚洲欧洲日韩国产| 色网站在线看| 日本大香伊一区二区三区| 在线观看亚洲视频| 成人高清视频在线| 国产精品初高中精品久久| 内射国产内射夫妻免费频道| 狠狠操天天操夜夜操| 欧美三级电影在线观看| 一区二区三区四区国产| 日本xxxwww免费视频| 亚洲瘦老头同性70tv| 我家有个日本女人| 久久激情久久| 羞羞网站在线看| 亚洲国产人成综合网站| 在线免费观看日本欧美爱情大片| 日韩男人的天堂| 欧美精品日日鲁夜夜添| 成人免费精品视频| 国产蜜臀一区二区打屁股调教| 国产欧美va欧美va香蕉在线| 最近中文字幕免费mv| 成人在线观看免费| 九七影院97影院理论片久久| 99国产精品视频免费观看一公开| 亚洲の无码国产の无码步美| 成人在线tv视频| 国产大片一区二区三区| 三上悠亚在线观看二区| 国产无一区二区| 天天夜夜人人| 古典武侠综合av第一页| 亚洲国产高清自拍| 中文字幕日日夜夜| 国产精品久久久久久久免费大片| 在线观看午夜av| 波多野结衣爱爱视频| 日韩大片在线免费观看| 免费一区二区在线观看| 美日韩精品免费视频| 猛男gaygay欧美视频| 欧美成人高清在线| 欧美性高清videossexo| 91免费精品国偷自产在线| 糖心vlog在线免费观看| 色棕色天天综合网| 午夜精品久久久久久久男人的天堂| www.国产在线视频| 一区二区欧美视频| 国内成+人亚洲+欧美+综合在线| 欧美中文字幕一区二区三区亚洲| 97香蕉超级碰碰久久免费软件| 蜜桃精品视频在线观看| 亚洲欧美福利一区二区| 欧美一级理论片| 日本xxxxxxxxx18| 黑人巨大精品欧美一区二区| 欧美电影免费提供在线观看| 天堂成人av| 亚洲精品狠狠操| 国产精品久久久久久久免费大片| 国产中文伊人| 欧美中文字幕在线视频| 男女曰b免费视频| 精品人妻无码一区二区三区蜜桃一| 日本一区二区三区视频在线播放| 熟女少妇在线视频播放| www.久久久久爱免| 亚洲精品97久久久babes| 黑丝av在线播放| 91久久综合亚洲鲁鲁五月天| 九色蝌蚪在线观看| 欧美.com| 91在线观看免费观看| 男女视频一区二区| 国产露脸国语对白在线| 风流少妇一区二区| 国产剧情av片巨作醉酒女邻居| 专区另类欧美日韩| 天天操天天艹| 日韩hd视频在线观看| 欧美 日韩 国产精品免费观看| av成人在线网站| 欧洲成人午夜免费大片| 免费看黄色片的网站| 国产有码在线一区二区视频| 天天影视天天精品| 91国在线视频| 另类国产ts人妖高潮视频| 91精品久久久久久久久久久久久| 国产精品免费成人| 久久最新视频| 丝袜 亚洲 另类 欧美 重口| 国产精品二区三区四区| 亚洲一级片在线观看| 国产精品大片wwwwww| 亚洲第一在线视频| 日韩av大全| 亚洲成人第一网站| 天堂av在线7| 亚洲aⅴ天堂av在线电影软件| 欧美大片拔萝卜| 久久久亚洲国产天美传媒修理工| 亚洲第一色中文字幕| 日韩精品视频在线观看一区二区三区| 国产午夜精品理论片| 中文字幕在线国产| 亚洲国产精品第一区二区三区| 四虎在线视频| 日韩美女视频一区二区| 免费亚洲精品视频| 九七电影韩国女主播在线观看| 最新亚洲视频| 91最新网站| 国产不卡精品一区二区三区| 美女脱光内衣内裤视频久久影院| jizzjizzxxxx| 欧美在线视频精品| 国产白丝精品91爽爽久久| 欧美 亚洲 另类 激情 另类| 久久久久久久激情视频| 日韩美女国产精品| 97人人模人人爽人人喊中文字| 国产精品jk白丝蜜臀av小说| 黄色直播在线| 日本在线视频www| 欧美激情一区二区三区不卡| 美女视频一区二区| 男生和女生一起差差差视频| 亚洲国产中文字幕在线视频综合| 男人的天堂在线视频| 国产a∨精品一区二区三区不卡| 中文字幕免费高清在线| 日韩av手机在线观看| 亚洲成人av资源网| 欧美三级一级片| 精品国产凹凸成av人网站| 一区二区精品在线观看| 日本亚洲自拍| 久久久不卡网国产精品二区| 欧美成人免费在线观看视频| 国产在线你懂得| 欧美日韩日日摸| 天天干天天操天天做| av女优在线| 亚洲国产精品久久久男人的天堂| 欧美成人午夜剧场免费观看| 欧美日韩精品久久久免费观看| 国内精品在线一区| 成人福利网站在线观看| 91精品久久久久久久久99蜜臂| 国产欧美激情视频| 第四色中文综合网| 国产激情视频一区| 日日夜夜狠狠操| 国产二区国产一区在线观看| 中文字幕亚洲综合久久菠萝蜜| 秋霞在线观看av| 岛国大片在线播放| 亚洲美女又黄又爽在线观看| 亚洲国产精品va在看黑人| 欧美成人激情免费网| 天堂8中文在线最新版在线| 久久人人97超碰com| 色综合五月天| 日韩在线观看电影完整版高清免费悬疑悬疑| 在线观看免费国产小视频| www国产亚洲精品久久麻豆| 色哟哟免费在线观看| 中文字幕超碰在线| 久久久久久成人精品| 久久99国产精品99久久| 久久精品午夜福利| 久久亚洲精品中文字幕冲田杏梨| 青青草原免费观看| 亚洲高清影院| 国产精品一区二区三区久久| 可以直接看的无码av| 亚洲美女喷白浆| 九色porny自拍| 麻豆成人久久精品二区三区红| 3d动漫啪啪精品一区二区免费| a篇片在线观看网站|