Как оптимизировать сырые запросы к MySQL в django


Я новичок в Django, вот мой код, что происходит: когда выполняется представление, оно загружается слишком долго, примерно 15 секунд, и это очень много, как я могу оптимизировать это, чтобы это не занимало слишком много времени?

from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from django.db  import connections
import datetime

@login_required
def show_data_tbl_form_gen(request):
    with connections['mysql_db'].cursor() as cursor:
        cursor.execute("SELECT * FROM tbl_form_gen ORDER BY time DESC")
        datos = cursor.fetchall()
    datos = [list(dato) for dato in datos]

    for dato in datos:
        id_granja = dato[4] 
        with connections['mysql_db'].cursor() as cursor:
            cursor.execute("SELECT NombreFinca FROM tbl_granjas WHERE CodigoFinca = %s", [id_granja])
            nameFarm = cursor.fetchone()
            if nameFarm:
                dato.append(nameFarm[0])  
            else:
                dato.append("Granja Desconocida")  
        id_colab=dato[2]
        with connections['mysql_avicon_bluehost'].cursor() as cursor:
            cursor.execute("SELECT Nombres, Apellidos FROM tblEmpleados WHERE Rol = %s", [id_colab])
            nameColab = cursor.fetchone()
            if nameColab:
                # union names and lastnames
                full_name = f"{nameColab[0]} {nameColab[1]}"
                dato.append(full_name)
            else:
                dato.append("Colaborador Desconocido/a") 
    #print list
    print("Array de datos con nombres de granja:", datos)

    return render(request, 'app_web_pofapp/select.html', {'datos': datos})

Что этот код делает запрос к базе данных MySQL и возвращает массив со всеми данными MySQL, затем это будет массив, возвращаемый функцией, как и этот, их несколько, так что если выполнение запроса занимает много времени, как я могу сделать так, чтобы это заняло меньше времени, есть ли способ?

[122, 4, '760', datetime.datetime(2024, 4, 1, 16, 56, 5), 53, None, 14, 'Semanal', 0, 1175, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 29, 'no hay', 1, 'uploads/23719bd6-ce5f-434b-a10a-0c10ad9ead001154655018750544176.jpg']

Я не знаю, как оптимизировать эти запросы, чтобы они занимали как можно меньше времени, спасибо

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