Django

Rendimiento de Django

Optimización de queries, problema N+1, índices de base de datos, connection pooling, profiling, monitoring

24 preguntas de entrevista·
Senior
1

¿Cuál es el problema de rendimiento más común relacionado con las queries del ORM de Django?

Respuesta

El problema N+1 es el problema de rendimiento más común con el ORM de Django. Ocurre cuando una query inicial recupera N objetos y luego se ejecutan N queries adicionales para recuperar los objetos relacionados. Por ejemplo, iterar sobre artículos y acceder a su autor genera una query por artículo en lugar de una sola query con join.

2

¿Qué método se debe usar para resolver el problema N+1 con una relación ForeignKey?

Respuesta

select_related() es el método adecuado para resolver el problema N+1 con relaciones ForeignKey y OneToOneField. Realiza un join SQL y recupera los objetos relacionados en una sola query. prefetch_related() se usa para relaciones ManyToMany o relaciones inversas (ForeignKey reverse).

3

¿Cuándo se debe usar prefetch_related() en lugar de select_related()?

Respuesta

prefetch_related() está diseñado para relaciones ManyToMany y relaciones inversas (ForeignKey reverse). A diferencia de select_related() que hace un join SQL, prefetch_related() ejecuta una query separada y realiza el join en Python. Esto evita la duplicación de datos que ocurriría con un join SQL sobre relaciones many-to-many.

4

¿Cómo usar Prefetch() para personalizar las queries de prefetch_related()?

5

¿Cuál es el principal beneficio de añadir un índice de base de datos en un campo?

+21 preguntas de entrevista

Domina Django para tu próxima entrevista

Accede a todas las preguntas, flashcards, tests técnicos, ejercicios de code review y simuladores de entrevista.

Empieza gratis