更快地访问Django中最旧的数据库记录?

时间:2011-11-06 19:31:13

标签: python database django

我有一个批处理作业,按最旧记录的顺序处理记录。在django中,我有一个与此类似的模型:

class mymodel(models.Model):
    name = models.CharField()
    ...
    last_processed = models.DateTimeField(blank=True, editable=False, null=True)

我需要通过DateTimeField last_processed获取最旧的记录。我理解django的做法是:

mymodel.objects.order_by('last_processed')[:1].get()

但是,是否有更快,更有效的方法来执行该查询?

我期待数据库增长,因此可能有多达1000万条记录。持续运行该查询似乎效率不高....

系统规范:

  • CentOS 6.0
  • Python 2.6.5
  • Django 1.3
  • PostgreSQL 8.4.7

3 个答案:

答案 0 :(得分:3)

你有'last_processed'的索引吗?如果是这样,无论表的大小如何,查询都将是高效的。

答案 1 :(得分:2)

如果您经常根据last_processed字段进行搜索,则可能值indexing it

否则你在做什么看起来很好

答案 2 :(得分:0)

我认为你必须弄清楚它是否效率低下。如果是,您可以缓存它(将其存储在数据库中,或使用类似memcache的东西)