Как отфильтровать данные из 10 ядер в django orm?

У меня есть таблица, которая содержит десять крор данных и не имеет отношения к другой таблице. Используется база данных MySQL. Когда я пытаюсь отфильтровать данные из таблицы с помощью ORM, на вывод результатов уходит от 10 до 12 минут.  Есть ли какое-нибудь решение, чтобы минимизировать это время?

class MyModel(models.Model):
    id = models.AutoField(primary_key=True)
    ticker = models.CharField(max_length=255)
    date = models.DateField()
    Open = models.FloatField(null=True,blank=True)
    High = models.FloatField(null=True,blank=True)
    Low = models.FloatField(null=True,blank=True)
    Close = models.FloatField(null=True,blank=True)
    Volume = models.FloatField(null=True,blank=True)
    Dividends = models.FloatField(null=True,blank=True)
    StockSplits = models.FloatField(null=True,blank=True)


    query = MyModel.objects.filter(ticker=ticker)

Одним из главных недостатков ORM в больших проектах является медлительность. Но djago позволяет выполнять sql команды

вы можете использовать следующее:

response = MyModel.objects.raw('your_sql_command')

или

from django.db import connection

context=[]

cursor = connection.cursor()
cursor.execute("your_sql_command")
while True :
    row = cursor.fetchone()
    if res:
        context.append(res)
    else:
        break
cursor.close()

подробнее вы можете прочитать в : Выполнение необработанных SQL запросов

Вернуться на верх