Ускорить Джанго запрос - PullRequest
0 голосов
/ 28 мая 2018

Я работаю с Django, чтобы создать панель управления, которая представляет много видов данных.Моя проблема в том, что страница загружается медленно, несмотря на то, что я ударил базу данных (PostgreSql) всегда один раз.Эти таблицы загружаются данными каждые 10 минут, поэтому в настоящее время они состоят из миллионов записей.Моя проблема в том, что когда я делаю запрос с помощью Django ORM, я получаю данные медленно (согласно панели инструментов Django это 1,4 секунды).Я знаю, что это не слишком много, потому что это половина общего времени загрузки (3,1), поэтому, если бы я мог уменьшить время запроса, загрузка страницы могла бы уменьшиться, чтобы пользовательский опыт мог быть лучше.При выполнении запроса я получаю ~ 2800 строк.Есть ли способ ускорить этот запрос?Я не знаю, что я делаю что-то не так или это время нормально с таким количеством данных.Я прилагаю свой запрос и модель.Заранее благодарю за помощь.

Мой запрос (Здесь я получаю интервал времени в 6 часов):

  my_query=MyTable.filter(time_stamp__range=(before_now,  now)).values('time_stamp',  'value1', 'value2')

Здесь я попытался использовать. iterator() но запрос не был быстрее.

Моя модель:

class MyTable(models.Model):
        time_stamp = models.DateTimeField()
        value1 = models.FloatField(blank=True, null=True)
        values2 = models.FloatField(blank=True, null=True)

1 Ответ

0 голосов
/ 28 мая 2018

Добавить index :

class MyTable(models.Model):
    time_stamp = models.DateTimeField()
    value1 = models.FloatField(blank=True, null=True)
    values2 = models.FloatField(blank=True, null=True)

    class Meta:
         indexes = [
             models.Index(fields=['time_stamp']),
         ]

Не забудьте запустить manage.py makemigrations и manage.py migrate после этого.

...