国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

mongo的密集索引與稀疏索引

Invoker / 525人閱讀

摘要:密集索引的索引默認(rèn)都是密集型的。也就是說,在一個(gè)有索引的集合里,每個(gè)文檔都會(huì)有對(duì)應(yīng)的索引項(xiàng),哪怕文檔中沒有被索引鍵也是如此。稀疏索引在稀疏索引里,只會(huì)出現(xiàn)被索引鍵有值的文檔。這種情況下密集型索引并不適合,你所需要的是稀疏索引。

密集索引

mongo的索引默認(rèn)都是密集型的。也就是說,在一個(gè)有索引的集合里,每個(gè)文檔都會(huì)有對(duì)應(yīng)的索引項(xiàng),哪怕文檔中沒有被索引鍵也是如此。例如,電子商務(wù)數(shù)據(jù)模型里的產(chǎn)品集合,假設(shè)你在產(chǎn)品屬性category_ids上構(gòu)建了一個(gè)索引。現(xiàn)在假設(shè)有些產(chǎn)品沒有分配給任何分類,對(duì)于每個(gè)無分類的產(chǎn)品,category_ids索引中仍會(huì)存在像這樣的一個(gè)null項(xiàng)??梢赃@樣查詢null值:db.products.find({category_ids: null})
在查詢?nèi)鄙俜诸惖乃挟a(chǎn)品時(shí),查詢優(yōu)化器仍然能使用category_ids上的索引定位對(duì)應(yīng)產(chǎn)品。

稀疏索引

在稀疏索引里,只會(huì)出現(xiàn)被索引鍵有值的文檔。如果想創(chuàng)建稀疏索引,指定{sparse: true}就可以了。例如,可以像下面這樣在sku上創(chuàng)建一個(gè)唯一性稀疏索引:
db.products.ensureIndex({sku: 1}, {unique: true, sparse: true})

如何選擇

但是有兩種情況使用密集型索引會(huì)不太方便。

一種是希望在并非出現(xiàn)在集合所有文檔內(nèi)的字段上增加唯一性索引時(shí)。舉例來說,你明確希望在每個(gè)產(chǎn)品的sku字段上增加唯一性索引。但是出于某些原因,假設(shè)產(chǎn)品在還未分配sku時(shí)就加入系統(tǒng)了。如果sku字段上有唯一性索引,而你希望插入多個(gè)沒有sku的產(chǎn)品,那么第一次插入會(huì)成功,但后續(xù)插入都會(huì)失敗,因?yàn)樗饕镆呀?jīng)存在一個(gè)sku為null的項(xiàng)了。這種情況下密集型索引并不適合,你所需要的是稀疏索引(sparse index)。

另一種適用稀疏索引的情況:集合中大量文檔都不包含被索引鍵。例如,假設(shè)允許對(duì)電子商務(wù)網(wǎng)站進(jìn)行匿名評(píng)論。這種情況下,半數(shù)評(píng)論都可能缺少user_id字段,如果那個(gè)字段上有索引,那么該索引中一半的項(xiàng)都會(huì)是null。出于兩個(gè)原因,這種情況的效率會(huì)很差。第一,這會(huì)增加索引的大小。第二,在添加和刪除帶null值user_id字段的文檔時(shí)也要求更新索引。
如果很少(或不會(huì))對(duì)匿名評(píng)論進(jìn)行查詢,那么可以選擇在user_id上構(gòu)建一個(gè)稀疏索引。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/18931.html

相關(guān)文章

  • 《javascript高級(jí)程序設(shè)計(jì)》筆記_數(shù)組 稀疏數(shù)組 偽數(shù)組

    摘要:數(shù)組是數(shù)據(jù)的有序列表,與其他語言不同的是,數(shù)組的每一項(xiàng)可以保存任何類型的數(shù)據(jù)。如下的代碼創(chuàng)建的就是一個(gè)密集數(shù)組稀疏數(shù)組與密集數(shù)組相反,并不強(qiáng)制要求數(shù)組元素是緊密相連的,即允許間隙的存在。 數(shù)組是數(shù)據(jù)的有序列表,與其他語言不同的是,ECMAScript 數(shù)組的每一項(xiàng)可以保存任何類型的數(shù)據(jù)。也就是說,可以用數(shù)組的第一個(gè)位置來保存字符串,用第二位置來保存數(shù)值,用第三個(gè)位置來保存對(duì)象, 以此類...

    pepperwang 評(píng)論0 收藏0
  • 讀lodash源碼之從slice看稀疏數(shù)組密集數(shù)組

    摘要:例如其中的為,但是數(shù)組中沒有元素,是稀疏數(shù)組而每個(gè)位置都是有元素的,雖然每個(gè)元素都為,為密集數(shù)組。那稀疏數(shù)組和密集數(shù)組有什么區(qū)別呢在中最主要考慮的是兩者在迭代器中的表現(xiàn)。截取并返回新數(shù)組為新數(shù)組容器。 卑鄙是卑鄙者的通行證,高尚是高尚者的墓志銘。 ——北島《回答》 看北島就是從這兩句詩開始的,高尚者已死,只剩卑鄙者在世間橫行。 本文為讀 lodash 源碼的第一篇,后續(xù)文章會(huì)更新到...

    lijy91 評(píng)論0 收藏0
  • Tensorflow Python API 翻譯(sparse_ops)

    摘要:數(shù)據(jù)維度是一維,表示輸出密集張量的維度。解釋這個(gè)函數(shù)的作用是將稀疏張量的坐標(biāo)轉(zhuǎn)換成密集張量中的布爾坐標(biāo)。一個(gè)布爾類型的向量,向量長(zhǎng)度是,并且其中包含個(gè)值。一個(gè)布爾類型的向量,數(shù)據(jù)長(zhǎng)度是,如果該行填充了,那么該位置的布爾值為。 作者:chen_h微信號(hào) & QQ:862251340微信公眾號(hào):coderpai簡(jiǎn)書地址:https://www.jianshu.com/p/c23... 計(jì)...

    BDEEFE 評(píng)論0 收藏0
  • Mongo索引學(xué)習(xí)筆記

    摘要:索引使用場(chǎng)景優(yōu)加快查詢速度劣增刪改會(huì)產(chǎn)生額外的開銷占用空間返回集合中一半以上的數(shù)據(jù),全表掃描的效率高索引基礎(chǔ)基礎(chǔ)操作查看索引創(chuàng)建索引已有大量數(shù)據(jù)時(shí)可后臺(tái)執(zhí)行不阻塞刪除索引查看索引大小屬性索引順序?yàn)檎?,為逆序在?fù)合索引中需注意順序索引屬 索引使用場(chǎng)景 優(yōu):加快查詢速度 劣:增刪改會(huì)產(chǎn)生額外的開銷、占用空間 tips: 返回集合中一半以上的數(shù)據(jù),全表掃描的效率高 索引基礎(chǔ) 基礎(chǔ)操作 查看...

    tianhang 評(píng)論0 收藏0
  • Mongo索引學(xué)習(xí)筆記

    摘要:索引使用場(chǎng)景優(yōu)加快查詢速度劣增刪改會(huì)產(chǎn)生額外的開銷占用空間返回集合中一半以上的數(shù)據(jù),全表掃描的效率高索引基礎(chǔ)基礎(chǔ)操作查看索引創(chuàng)建索引已有大量數(shù)據(jù)時(shí)可后臺(tái)執(zhí)行不阻塞刪除索引查看索引大小屬性索引順序?yàn)檎?,為逆序在?fù)合索引中需注意順序索引屬 索引使用場(chǎng)景 優(yōu):加快查詢速度 劣:增刪改會(huì)產(chǎn)生額外的開銷、占用空間 tips: 返回集合中一半以上的數(shù)據(jù),全表掃描的效率高 索引基礎(chǔ) 基礎(chǔ)操作 查看...

    nihao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<