[RUBY] [Problème N + 1]

Quel est le problème N + 1?

Un problème qui se produit lorsque les modèles sont associés les uns aux autres dans une association.

Par exemple, lorsqu'un utilisateur et une publication sont liés dans une application telle que Twitter Lors de l'affichage d'une liste d'articles sur la première page, si vous accédez à la base de données à chaque fois pour rechercher l'utilisateur associé à chaque article, les performances de l'application diminueront.

Si vous avez 10 000 publications, vous devez accéder à la base de données 10 000 fois.

Ce problème est appelé le problème N + 1.

La méthode pour résoudre ce problème

inclure la méthode

La méthode appelée.

Cette méthode accédait à chaque fois à la base de données et recherchait les données associées. Toutes les données sont acquises en même temps.

Par conséquent, même s'il y a 10 000 publications, vous ne devez accéder à la base de données qu'une seule fois.

n+1.png

Comme le montre l'image ci-dessus, il peut être utilisé en définissant inclut (: modèle lié) dans le contenu de traitement de l'action d'index.

Avec cela, quel que soit le nombre de messages ajoutés lors de la liste des tweets, etc., les performances ne seront pas réduites.

Recommended Posts

[Problème N + 1]
Ne sous-estimez pas le problème N + 1!
Problème FizzBuzz
Problème de rubis ⑦
problème de recherche de rubis
[Ruby] Problème de FizzBuzz
Problème d'API ruby
problème de méthode de scan
[Java] Problème n ° 2
[Java] Problème n ° 3
Problème d'API ruby
[Java] Problème n ° 1
Problème de base de Ruby_work
/ n \ n docker java
[Débutant] Découvrez le problème N + 1! Comment utiliser Bullet