El Active Record de Ruby on Rails tiene muchas cosas geniales, pero algunas de ellas si no las manejas bien pueden repercutir negativamente en el rendimiento de la aplicación.
Uno de los errores más frecuentes de los desarrolladores novatos de rails es el problema de las N+1 queries.
El problema sucede cuando intentando realizar una sola consulta a la base de datos termina haciendo N+1 consultas, y aunque cuando uno tiene una base de datos con pocos datos el efecto es casi invisible, a medida de que crece el número de datos y el número de clientes este problema puede llegar a impactar de forma muy dura en el rendimiento de tu aplicación a tal punto de botarla.
¿Cuándo ocurre?
El problema ocurre cuando se itera sobre los hijos de uno de los objetos del modelo, para analizarlo sobre un caso práctica imaginemos que tenemos 2 modelos, uno de usuario y el otro de pins y cada usuario tiene muchos pins.
Específicamente el problema se hace visible en la iteración de los resultados.
Ahora cuando uno trabaja bajo un paradigma MVC es raro que uno tenga el código de esta forma, lo más probable es que el llamado a todos los usuarios se haga en la página index y luego dentro de la vista usuario se itere sobre los resultados mostrando por ejemplo los 5 mejores pins de cada usuario, pero el resultado es exactamente el mismo, n+1 llamados a la base de datos.
Para este caso de pruebas se tienen 2 usuarios, Diego y Gonzalo y uno tiene 3 pins y el otro ninguno, y aquí podemos observar que que se hicieron 2 queries a la base de datos en lugar de solo 1.
Para solucionarlo en el mismo momento que hacemos el query debemos incluir a los hijos del modelo, en nuestro caso el query inicial debió haber sido.
User.all.includes(:pin)
De esta forma se hace una sola consulta a la base de datos, ahora repitamos el experimento anterior y comparemos resultados.
Y vemos que ahora solo hay una consulta.
- Türkiye’de Pin Up Casino Ve Mobil Uygulama Yükleme - March 28, 2024
- المراهنات الرياضية أونلاين 1xbet ᐉ شركة المراهنات 1xbet تسجيل الدخول ᐉ 1xbet Co - March 28, 2024
- تطبيقات الرهان الأفضل على Ios و Android في الدول العربية لعام 202 - March 28, 2024
- Pin Up Casino Online Tr Turkey Pinup Resmi Sitesi Kayıt Kaydol Pin Ap Bahisçi 30 - March 28, 2024
- Ольшаков К Против Туницын Д Ставки в Настольный Теннис Онлайн 25 3 2024 Трансляция И Прогнозы На Матч и Букмекерской Конторе Betboom - March 28, 2024
- а Правильно Делать Ставки На Спорт в Букмекерской Конторе: Инструкция Для Начинающи - March 27, 2024
- а Правильно Делать Ставки На Спорт в Букмекерской Конторе: Инструкция Для Начинающи - March 27, 2024
- 1xbet التسجيل عبر الإنترنت في المغرب كيفية التسجيل في 1xbet - March 24, 2024
- مراهنات كرة القدم اون لاين افضل مواقع المراهنات الرياضية في الدول العربية 202 - March 24, 2024
- تنزيل 1xbet => جميع إصدارات 1xbet Sixth V 1116560 تطبيقات المراهنات + مكافأة مجاني - March 23, 2024
Leave a Reply