这些GAE数据存储查询中的哪一个更有效?

时间:2011-01-03 11:11:50

标签: python google-app-engine

假设我已按以下方式定义了我的数据模型:

class Newsportal(db.Model):
  name = db.StringProperty()
  #... blah blah blah
class Article(db.Model):
  newsportal = db.ReferenceProperty(Newsportal)
  url = db.StringProperty()
  date = db.DateTimeProperty()
  #... blah blah blah

现在我想确定db中是否有一篇包含某个url的文章(每个url都是唯一的)。哪一个查询应该更有效:

Article.all().filter('newspaper = ', someNewspaper.key()).filter('date = ', someDate).filter('url = ', someUrl).get()
or 
Article.all().filter('url = ', someUrl).get()

2 个答案:

答案 0 :(得分:2)

假设您有第一个查询的自定义索引,它们应该具有相同的效率,尽管除非您将URL用作key_name,否则数据存储区不会为您强制执行唯一性,在这种情况下您不需要查询可以使用更高效的get_by_key_name。

答案 1 :(得分:0)

我认为两个查询都会在大约相同的时间内执行。两个查询都需要一个索引,并且因为每个索引中的条目数量相同,所以我看不出会让一个查询占用的时间长于另一个。

您应该查看您的OTHER查询,看看您是否可以安排它,以便它们都可以使用相同的索引。