黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

MongoDB學(xué)習(xí)筆記(8)--索引及優(yōu)化索引

系統(tǒng) 2406 0
MongoDB 提供了多樣性的索引支持,索引信息被保存在system.indexes中,且默認(rèn)總是為_(kāi)id創(chuàng)建索引,它的索引使用基本和 MySQL 等關(guān)系型數(shù)據(jù)庫(kù)一樣。其實(shí)可以這樣說(shuō)說(shuō),索引是凌駕于數(shù)據(jù)存儲(chǔ)系統(tǒng)之上的另一層系統(tǒng),所以各種結(jié)構(gòu)迥異的存儲(chǔ)都有相同或相似的索引實(shí)現(xiàn)及使用接口并不足為奇。

?

基礎(chǔ)索引?

在字段age上創(chuàng)建索引,1(升序);-1(降序)??

?db.t3.ensureIndex({age:1})??

?db.t3.getIndexes();??

_id是創(chuàng)建表的時(shí)候自動(dòng)創(chuàng)建的索引,此索引是不能 夠刪除的。 ?
當(dāng)系統(tǒng)已有大量數(shù)據(jù)時(shí),創(chuàng)建索引就是個(gè)非常耗時(shí)的活,我們可以在后臺(tái)執(zhí)行,只需指定“backgroud:true”即可。??

?db.t3.ensureIndex({age:1} , {backgroud:true})??

?

文檔索引?

?索引可以任何類(lèi)型的字段,甚至文檔

?在addr 列上創(chuàng)建索引?

?db.factories.ensureIndex( { addr : 1 } );??

?下面這個(gè)查詢將會(huì)用到我們剛剛建立的索引?

?db.factories.find( { addr: { city: "Beijing", state: "BJ" } } );??

?但是下面這個(gè)查詢將不會(huì)用到索引,因?yàn)椴樵兊捻樞蚋饕⒌捻樞虿灰粯?

?db.factories.find( { addr: { state: "BJ" , city: "Beijing"} } );?

??

組合索引 ?

跟其它數(shù)據(jù)庫(kù)產(chǎn)品一樣,MongoDB 也是有組合索引的,下面我們將在addr.city 和addr.state
上建立組合索引。當(dāng)創(chuàng)建組合索引時(shí),字段后面的 1 表示升序,-1 表示降序,是用 1 還是

用-1主要是跟排序的時(shí)候或指定范圍內(nèi)查詢 ?的時(shí)候有關(guān)的。?

db.factories.ensureIndex( { "addr.city" : 1, "addr.state" : 1 } );

// ?下面的查詢都用到了這個(gè)索引?

db.factories.find( { "addr.city" : "Beijing", "addr .state" : "BJ" } );?
db.factories.find( { "addr.city" : "Beijing" } );?
db.factories.find().sort( { "addr.city" : 1, "addr.state" : 1 } );?

db.factories.find().sort( { "addr.city" : 1 } )??

?

唯一索引 ?

只需在ensureIndex命令中指定”unique:true”即可創(chuàng)建唯一索引。?

db.t4.ensureIndex({firstname: 1, lastname: 1}, {unique: true});??

?

強(qiáng)制使用索引

?db.t5.find({age:{$lt:30}}).hint({name:1, age:1})

?

刪除索引?

?刪除 t3表中的所有索引?

?db.t3.dropIndexes()??

?刪除 t4表中的 firstname 索引??

?db.t4.dropIndex({firstname: 1})?

?

explain?執(zhí)行計(jì)劃

?MongoDB ?提供了一個(gè) explain ?命令讓我們獲知系統(tǒng)如何處理查詢請(qǐng)求。利用 explain ?命令,我們可以很好地觀察系統(tǒng)如何使用索引來(lái)加快檢索,同時(shí)可以針對(duì)性優(yōu)化索引。

??db.t5.find({age:{$gt:45}}, {name:1}).explain() ? ? ? ??

{?
? ? ? ? "cursor" : "BtreeCursor age_1",?
? ? ? ? "nscanned" : 0,?
? ? ? ? "nscannedObjects" : 0,?
? ? ? ? "n" : 0,?
? ? ? ? "millis" : 0,?
? ? ? ? "nYields" : 0,?
? ? ? ? "nChunkSkips" : 0,?
? ? ? ? "isMultiKey" : false,?
? ? ? ? "indexOnly" : false,?
? ? ? ? "indexBounds" : {?
? ? ? ? ? ? ? ? "age" : [?
? ? ? ? ? ? ? ? ? ? ? ? [?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 45,?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1.7976931348623157e+308?
? ? ? ? ? ? ? ? ? ? ? ? ]?
? ? ? ? ? ? ? ? ]?

}

}?

字段說(shuō)明

cursor: ?返回游標(biāo)類(lèi)型(BasicCursor ?或 BtreeCursor)??

nscanned: ?被掃描的文檔數(shù)?

n: ?返回的文檔數(shù)量??

millis: ?耗時(shí)(毫秒)??

indexBounds: ?所使用的索引?

?

MongoDB學(xué)習(xí)筆記(8)--索引及優(yōu)化索引


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論