gpt4 book ai didi

google-app-engine - 在 Appengine 数据存储上查询 N 条随机记录

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:59 24 4
gpt4 key购买 nike

我正在尝试编写一个 GQL 查询,它返回 N 个特定类型的随机记录。我当前的实现有效,但需要对数据存储进行 N 次调用。如果可能的话,我想对数据存储进行 1 次调用。

我目前为放入数据存储区的每种类型分配一个随机数。当我查询随机记录时,我生成另一个随机数并查询记录 > rand ORDER BY asc LIMIT 1。

这有效,但是,它只返回 1 条记录,所以我需要进行 N 次查询。关于如何进行此查询的任何想法?谢谢。

最佳答案

“在幕后”单个搜索查询调用只能从某个索引返回一组连续的行。这就是为什么某些 GQL 查询(包括对 != 的任何使用)扩展到多个数据存储区调用的原因。

N 个独立的均匀随机选择在任何索引中都不是(通常)连续的。

QED。

您或许可以使用内存缓存来存储实体,并减少获取 N 个实体的成本。或者,如果您不介意“随机”选择在索引中靠近在一起,请在一个查询中选择一个随机选择的 block (比如)100,然后从中随机选择 N。由于您有一个已经随机化的字段,因此对于局外人来说,这 N 个项目是相关的不会立即显而易见。至少,直到他们查看大量样本并注意到项目 A 和 Z 从未出现在同一组中,因为它们在随机索引中相差超过 100。如果性能允许,您可以不时地重新随机化您的实体。

关于google-app-engine - 在 Appengine 数据存储上查询 N 条随机记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1105004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com