Jat*_*t90 2 javascript database indexing mongodb
数据库管理新手。我有一个书籍数据库,我想为 ISBN 创建一个长度为 13 个字符的索引。示例:'9781509825889'
目前我正在使用字符串索引,但我已经阅读了关于是否存储为 int 或字符串以进行索引优化的冲突点。
看起来我有 Int32 或 Int64 选项,我认为上面的 ISBN 对于 Int32 来说太大了,但是否值得切换到 Int64 进行查询优化,还是应该坚持使用字符串?是否有任何显着的性能提升?
谢谢
MongoDb 索引不依赖于字段的数据类型,因此将其放入String
or Int32
or并不重要Int64
。
所有索引都经过哈希处理,这就是它不依赖于您使用的数据类型的原因。
参考:
您可以选择创建 astring
或 a long
(Int64)。Int32 不能容纳大小。
字符串数据存储和索引存储大小会稍大一些。例如,我创建了 100 万个文档,其数字和字符串数据类型为 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,
"count" : 1000000,
"avgObjSize" : 46,
"storageSize" : 15015936,
"indexSizes" : {
"_id_" : 9916416,
"isbn_1" : 11018240
},
Run Code Online (Sandbox Code Playgroud)
此外,请注意,无论数据类型如何,对 isbn 的查询通常都同样快。
ISBN 显示为结构化数字,例如,978-3-16-148410-0
。如果您可能在应用程序中以该格式使用它,则可以将其存储为结构化字符串。
归档时间: |
|
查看次数: |
1980 次 |
最近记录: |