我有一个按最旧记录顺序处理记录的批处理作业。在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
我通常会写'MyModel.objects.order_by('last_processed')[0]',而不是切片然后调用'得到()'。这只是一个风格问题,但底层SQL对于这两个查询都是相同的。 – Alasdair