
Optimización del rendimiento
Database indexing, optimización de consultas, gem Bullet, rack-mini-profiler, concurrencia/Puma, thread-safety, connection pool
1¿Cuál es el objetivo principal de agregar un index sobre una columna de la base de datos?
¿Cuál es el objetivo principal de agregar un index sobre una columna de la base de datos?
Respuesta
Un index acelera las consultas de búsqueda al crear una estructura de datos optimizada (generalmente un B-tree) que evita escanear todas las filas de la tabla. Sin index, la base de datos realiza un sequential scan que puede ser muy lento en tablas grandes. Las columnas usadas con frecuencia en cláusulas WHERE, ORDER BY o joins son candidatas ideales para la indexación.
2¿Cómo crear un index compuesto sobre las columnas user_id y created_at en una migration de Rails?
¿Cómo crear un index compuesto sobre las columnas user_id y created_at en una migration de Rails?
Respuesta
El método add_index acepta un array de columnas para crear un index compuesto. El orden de las columnas importa: el index será eficiente para las consultas que filtran primero por user_id y luego por created_at, pero no para las consultas que filtran únicamente por created_at. Un index compuesto es óptimo para las consultas que usan las columnas de izquierda a derecha.
3¿Qué es el problema N+1 en el contexto de ActiveRecord?
¿Qué es el problema N+1 en el contexto de ActiveRecord?
Respuesta
El problema N+1 ocurre cuando una consulta inicial recupera N registros y luego se ejecutan N consultas adicionales para cargar las asociaciones de cada registro. Por ejemplo, cargar 100 posts y luego hacer 100 consultas individuales para los autores. Este patrón multiplica el número de consultas y degrada gravemente el rendimiento. La solución es usar includes, preload o eager_load para cargar las asociaciones en una o dos consultas.
¿Qué método de ActiveRecord usar para resolver el problema N+1 cargando las asociaciones por adelantado?
¿Cuál es el rol del gem Bullet en la optimización del rendimiento de Rails?
+23 preguntas de entrevista
Otros temas de entrevista Ruby on Rails
Fundamentos de Ruby
Programación orientada a objetos en Ruby
Fundamentos de Rails
Routing & Controllers
Fundamentos de ActiveRecord
Views y plantillas ERB
Asociaciones de ActiveRecord
Consultas avanzadas de ActiveRecord
Formularios Rails
Autenticación y Autorización
Asset Pipeline moderno y frontend
Modo API de Rails
Pruebas con RSpec
ActiveJob & Background Jobs
ActionCable & WebSockets
ActionMailer
ActiveStorage
Estrategias de caching
Migraciones avanzadas
Rails Engines y apps modulares
Patrones de diseño en Rails
Metaprogramación en Ruby
Seguridad en Rails
GraphQL con Rails
Despliegue y Producción
Monitoring & Logging
Estrategias de actualización de Rails
Domina Ruby on Rails para tu próxima entrevista
Accede a todas las preguntas, flashcards, tests técnicos, ejercicios de code review y simuladores de entrevista.
Empieza gratis