在Django中更快速地访问最旧的数据库记录的方法?
我有一个批处理任务,需要按记录的时间顺序处理数据,最老的记录先处理。在django中,我定义了一个模型,类似于下面这样:
class mymodel(models.Model):
name = models.CharField()
...
last_processed = models.DateTimeField(blank=True, editable=False, null=True)
我需要通过一个叫做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
我觉得你得先弄清楚它是不是效率低下。如果是的话,你可以考虑缓存一下(把数据存到数据库里,或者用像memcache这样的工具)。
2
如果你经常根据 last_processed 这个字段来搜索数据,可能值得给它 建立索引。
否则,你现在的做法看起来没问题。
3
你有没有在'last_processed'这个字段上建立索引?如果有的话,不管表的大小如何,这个查询都会很高效。