我的GAE项目中有一类视频,我希望能够通过他们的分数进行搜索,这是赞成减去downvotes的upvotes。我希望能够查询此值,并希望以最有效的方式获取它。我认为获得带有计算属性是以下列方式的最佳方式:
class Video(ndb.Model):
title = ndb.StringProperty(required = True)
description = ndb.TextProperty()
upvotes = ndb.IntegerProperty(required = True)
downvotes = ndb.IntegerProperty(required = True)
score = ndb.ComputedProperty(lambda self: self.upvotes - self.downvotes)
如果ComputedProperty有任何性能拖累,我很好奇吗?每次给出一个upvote或downvote时,只是加分或减去得分值会更有效吗?
答案 0 :(得分:1)
对于简单的计算(如示例中的计算),应该没有太大的性能拖累。是的,每当您读取数据时都会运行计算,但是首先构造结果集涉及的逻辑要多得多;单个减法不会影响任何事情。
对于更复杂的计算,是的,可能会有性能损失。