摘要:密集索引的索引默認都是密集型的。也就是說,在一個有索引的集合里,每個文檔都會有對應的索引項,哪怕文檔中沒有被索引鍵也是如此。稀疏索引在稀疏索引里,只會出現被索引鍵有值的文檔。這種情況下密集型索引并不適合,你所需要的是稀疏索引。
密集索引
mongo的索引默認都是密集型的。也就是說,在一個有索引的集合里,每個文檔都會有對應的索引項,哪怕文檔中沒有被索引鍵也是如此。例如,電子商務數據模型里的產品集合,假設你在產品屬性category_ids上構建了一個索引。現在假設有些產品沒有分配給任何分類,對于每個無分類的產品,category_ids索引中仍會存在像這樣的一個null項。可以這樣查詢null值:db.products.find({category_ids: null})
在查詢缺少分類的所有產品時,查詢優化器仍然能使用category_ids上的索引定位對應產品。
在稀疏索引里,只會出現被索引鍵有值的文檔。如果想創建稀疏索引,指定{sparse: true}就可以了。例如,可以像下面這樣在sku上創建一個唯一性稀疏索引:
db.products.ensureIndex({sku: 1}, {unique: true, sparse: true})
但是有兩種情況使用密集型索引會不太方便。
一種是希望在并非出現在集合所有文檔內的字段上增加唯一性索引時。舉例來說,你明確希望在每個產品的sku字段上增加唯一性索引。但是出于某些原因,假設產品在還未分配sku時就加入系統了。如果sku字段上有唯一性索引,而你希望插入多個沒有sku的產品,那么第一次插入會成功,但后續插入都會失敗,因為索引里已經存在一個sku為null的項了。這種情況下密集型索引并不適合,你所需要的是稀疏索引(sparse index)。
另一種適用稀疏索引的情況:集合中大量文檔都不包含被索引鍵。例如,假設允許對電子商務網站進行匿名評論。這種情況下,半數評論都可能缺少user_id字段,如果那個字段上有索引,那么該索引中一半的項都會是null。出于兩個原因,這種情況的效率會很差。第一,這會增加索引的大小。第二,在添加和刪除帶null值user_id字段的文檔時也要求更新索引。
如果很少(或不會)對匿名評論進行查詢,那么可以選擇在user_id上構建一個稀疏索引。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/18931.html
摘要:數組是數據的有序列表,與其他語言不同的是,數組的每一項可以保存任何類型的數據。如下的代碼創建的就是一個密集數組稀疏數組與密集數組相反,并不強制要求數組元素是緊密相連的,即允許間隙的存在。 數組是數據的有序列表,與其他語言不同的是,ECMAScript 數組的每一項可以保存任何類型的數據。也就是說,可以用數組的第一個位置來保存字符串,用第二位置來保存數值,用第三個位置來保存對象, 以此類...
摘要:例如其中的為,但是數組中沒有元素,是稀疏數組而每個位置都是有元素的,雖然每個元素都為,為密集數組。那稀疏數組和密集數組有什么區別呢在中最主要考慮的是兩者在迭代器中的表現。截取并返回新數組為新數組容器。 卑鄙是卑鄙者的通行證,高尚是高尚者的墓志銘。 ——北島《回答》 看北島就是從這兩句詩開始的,高尚者已死,只剩卑鄙者在世間橫行。 本文為讀 lodash 源碼的第一篇,后續文章會更新到...
摘要:數據維度是一維,表示輸出密集張量的維度。解釋這個函數的作用是將稀疏張量的坐標轉換成密集張量中的布爾坐標。一個布爾類型的向量,向量長度是,并且其中包含個值。一個布爾類型的向量,數據長度是,如果該行填充了,那么該位置的布爾值為。 作者:chen_h微信號 & QQ:862251340微信公眾號:coderpai簡書地址:https://www.jianshu.com/p/c23... 計...
摘要:索引使用場景優加快查詢速度劣增刪改會產生額外的開銷占用空間返回集合中一半以上的數據,全表掃描的效率高索引基礎基礎操作查看索引創建索引已有大量數據時可后臺執行不阻塞刪除索引查看索引大小屬性索引順序為正序,為逆序在復合索引中需注意順序索引屬 索引使用場景 優:加快查詢速度 劣:增刪改會產生額外的開銷、占用空間 tips: 返回集合中一半以上的數據,全表掃描的效率高 索引基礎 基礎操作 查看...
摘要:索引使用場景優加快查詢速度劣增刪改會產生額外的開銷占用空間返回集合中一半以上的數據,全表掃描的效率高索引基礎基礎操作查看索引創建索引已有大量數據時可后臺執行不阻塞刪除索引查看索引大小屬性索引順序為正序,為逆序在復合索引中需注意順序索引屬 索引使用場景 優:加快查詢速度 劣:增刪改會產生額外的開銷、占用空間 tips: 返回集合中一半以上的數據,全表掃描的效率高 索引基礎 基礎操作 查看...
閱讀 1748·2023-04-25 16:28
閱讀 684·2021-11-23 09:51
閱讀 1467·2019-08-30 15:54
閱讀 1150·2019-08-30 15:53
閱讀 2816·2019-08-30 15:53
閱讀 3413·2019-08-30 15:43
閱讀 3250·2019-08-30 11:18
閱讀 3262·2019-08-26 10:25