Более быстрый способ получить доступ к самой старой записи базы данных в Django? - PullRequest
1 голос
/ 06 ноября 2011

У меня есть пакетное задание, которое обрабатывает записи в порядке самой старой записи. В Django у меня есть определенная модель, подобная этой:

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

Мне нужно получить самую старую запись с помощью DateTimeField last_processed. Я понимаю, что Джанго может сделать это так:

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

Однако существует ли более быстрый и эффективный способ выполнения этого запроса?

Я ожидаю, что база данных будет расти, поэтому возможно иметь до 10 миллионов записей. Постоянный запуск этого запроса не кажется эффективным ....

Спецификация системы:

  • CentOS 6,0
  • Python 2.6.5
  • Джанго 1,3
  • PostgreSQL 8.4.7

Ответы [ 3 ]

3 голосов
/ 06 ноября 2011

Есть ли у вас индекс для last_processed?Если это так, запрос будет работать независимо от размера таблицы.

2 голосов
/ 06 ноября 2011

, если вы часто осуществляете поиск на основе поля last_processed, оно может стоить индексировать его

, иначе то, что вы делаете, выглядит хорошо

0 голосов
/ 07 ноября 2011

Я думаю, вы должны выяснить, неэффективно ли это.Если это так, вы можете кэшировать его (сохранить в БД или использовать что-то вроде memcache)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...