App Engine数据存储区查询的返回值是否有默认排序顺序?如果是这样的话是什么?
答案 0 :(得分:3)
默认情况下,您获得密钥顺序,密钥顺序取决于您是使用默认ID还是提供了密钥名称,如果是前者,则是否使用默认策略进行密钥分配。 The doc表示“默认策略会生成大致均匀分布的随机ID序列。每个ID最长可达16位十进制数。”
“16位”部分很有趣。基本上,密钥是53位 - IEEE双倍的一小部分。 JavaScript使用IEEE双精度数,因此53位是您可以通过JSON安全地往返的最大整数值。
答案 1 :(得分:2)
Datastore write costs表示数据存储区实体包含内置EntityByKinds
索引。 This index包含实体密钥。
每次添加任何类型的新实体时,都会使用新实体的密钥自动将新行添加到此表中,以便稍后查询。
所以我猜如果没有提供订单,数据存储区会返回按键排序的实体。
存储实体密钥,以便在执行查询后返回实体本身时,可以有效地检索实体本身。
我找不到关于asc / desc的文档,但是当我在下面查询时,默认顺序为asc
。
>SELECT * FROM Model order by __key__ asc
>SELECT * FROM Model
success and same result
>SELECT * FROM Model order by __key__ desc
no matching index found
所以我的研究结论是默认顺序是
order by __key__ asc
如果我错过了什么,请纠正我。
答案 2 :(得分:1)
取决于您过滤的参数。基本上,排序顺序始终是ASC,具体取决于它的过滤方式。看看this document它可能会有所帮助。基本上您使用的过滤器将决定排序顺序。另一个有趣的文档是this one,它更详细地解释了索引。
如果您没有使用过滤器,我相信所使用的索引是基于键的索引,因此您可以使用升序键作为订单。