[pyar] [django] como achicar los queries?

QliX=D! [aka EHB] qlixed en gmail.com
Vie Sep 17 01:13:39 ART 2010


2010/9/16 xavier lesa <xavierlesa en gmail.com>:
> Hola gente, estoy teniendo un problemita cuando accedo al "perfil" de un
> usuario, haciendo la típica extensión del modelo User.
> básicamente tengo un modelo "contentobjects" que se relaciona con el modelo
> "user" y este con "user_profile" (quien lo extiende).
>
> class ContentObjects(models.Model):
>     user = models.ForeignKey(User)
>
> class UserProfile(models.Model):
>     user = models.ForeignKey(User)
>
> el problema es que cuando genero la vista de ContentObject y de la relación
> user "traigo" el user_profile, me genera 2 queries mas
> y esto en total sumando los queries propios de ContentObject me suma 45
> queries solo para 15 registros, y tengo que mostrar
> como 1500... haciendo un test muy básico de eso me llevo como 15 seg cargar
> todo.
>

X q tenes 45 queries solo para ContentObject?, creo que el punto a
revisar es eso.
Si tenes que mostrar 1500, haces un select uno a uno de los objetos?
O sea, usando select related igualmente serian 15 queries para 15 objetos a
mostrar, es MUCHO igual, pasarias de 4500 a 1500 queries!.


> Entonces me preguntaba, si yo "replico" los campos -- rompiendo el principio
> DRY -- de user_profile en ContentObject me ahorraría esos queries
> demás, y solo para levantar esos 1500 registros usaría 5 queries..
>
> Ven esto como una practica "aceptable"? o creen que debería encararlo de una
> manera distinta? optimizando los queries talvés?

A mi entender, no deberias hacerlo, deberias usar selected_related. y
revisar el
esquema de consulta.


EHB



More information about the pyar mailing list