在Google App Engine中,我有一个带有10K实体的模型,其属性为foo。找到第一个四分位数,第二个四分位数(中位数)和第三个四分位数实体的最有效方法是什么?我可以获取已排序的键列表并以编程方式找到三个四分位键,但下载所有键将无法缩放。什么是更优雅的方法?
sortedValues = MyModel.all(keys_only=True).order('foo').fetch(limit=10000)
答案 0 :(得分:1)
您是否尝试过.fetch(2500,limit=1)
,.fetch(5000,limit=1)
和.fetch(7500,limit=1)
?第一个参数对应于偏移量。
但是,文档会读取以下内容,因此这种方法无法为您提供O(1)
性能。
Note: The query has performance characteristics that correspond linearly with the offset amount plus the limit amount.
来自here。
答案 1 :(得分:0)
由于四分位数是根据实体排序定义的,遗憾的是,除了迭代它们之外,没有办法确定它们。正如cheeken所指出的那样,你可以通过使用偏移量参数获取中间结果来加快速度。