MongoDB索引:字符串与整数

数据库管理新手。我有一个图书数据库,我想为ISBN创建一个长度为13个字符的索引。例如:“ 9781509825889”

当前,我正在使用字符串索引,但是我已经读过关于是否将其存储为int或用于索引优化的字符串的矛盾之处。

似乎我具有Int32或Int64选项,并且我认为上述ISBN对于Int32来说太大了,但是是否值得切换到Int64进行查询优化,还是我应该坚持使用字符串?有没有明显的性能提升?

谢谢

hohoman610 回答:MongoDB索引:字符串与整数

您可以选择创建stringlong(Int64)。 Int32无法容纳该大小。

字符串数据存储区和索引存储区的大小会稍大。例如,我创建了一百万个具有isbn数字的数字和字符串数据类型的文档(在两个不同的集合中)。示例文档如下所示:{ "_id" : ObjectId("5dc8d8fef25cf42fe848076d"),"isbn" : 1000000999999 }db.collection.stats()显示尺寸信息:

"size" : 36000000,"count" : 1000000,"avgObjSize" : 36,"storageSize" : 12169216,"indexSizes" : {
        "_id_" : 9920512,"isbn_1" : 10887168
},"size" : 46000000,"avgObjSize" : 46,"storageSize" : 15015936,"indexSizes" : {
        "_id_" : 9916416,"isbn_1" : 11018240
},

此外,请注意,通常,无论数据类型如何,对isbn的查询都同样快。

ISBN显示为结构化编号,例如978-3-16-148410-0。如果您可能会在应用程序中以这种格式使用它,则可以将其存储为结构化字符串。

,

MongoDb索引不取决于字段的数据类型,因此将其放入StringInt32Int64中并不重要。

所有索引都是散列的,这就是为什么它不取决于您使用的数据类型的原因。

参考文献:

  1. Does field type matter in a MongoDB index?
本文链接:https://www.f2er.com/3126973.html

大家都在问