Как отфильтровать данные из 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 запросов