0

这是一个通用的 App Engine 数据存储索引问题。数据存储自动构建可用于简单单属性查询(不涉及复合键的查询)的索引。

生成此索引的开销是否因实体属性的基础数据类型而异?

基本上我的问题归结为:

def Person(db.Model):
  name = db.StringProperty()
  rollnumber = db.IntegerProperty()

与name相比,属性rollnumber的索引开销是否更小?

4

1 回答 1

5

索引值所需的空间包括:

  • 值本身的大小,
  • 如果它是可变长度的,如字符串,则在 1 到 3 个字节之间的任意位置来存储值的长度
  • 名称的大小(例如,'rollnumber'),再加上几个字节来存储长度
  • 实体密钥的大小
  • 一些额外的开销字节

这里唯一令人惊讶的应该是名称与每个索引属性一起存储。这是因为数据存储中没有静态定义的列名 - 没有模式 - 因此有必要将其与每个索引值一起存储。

于 2010-08-16T20:43:02.547 回答