Utilisation de jointures dans Laravel Elognent Queries pour de meilleures performances

Utilisation de jointures dans Laravel Elognent Queries pour de meilleures performances
Le plus souvent, je vois des gens faire de nombreuses erreurs lorsqu'ils interagissent avec une base de données, et de nombreux débutants ne font pas vraiment attention au nombre d'appels. Et c'est bien au début. Surtout si votre application est petite et que vous apprenez toujours.

De plus, je pense également qu'au début de l'application Laravel, vous devez vous concentrer sur la construction des fonctionnalités et le codage. Une fois que vous commencez à rencontrer des problèmes et que vous commencez réellement à remarquer que votre application est lente, seulement alors vous devriez examiner ce que vous pouvez faire pour optimiser vos requêtes MySQL.

99% du temps, vous utiliserez des méthodes éloquentes pour passer des appels de base de données et parfois l'itinéraire facile que vous souhaitez prendre, se révèle provoquer des problèmes.

Orm comme Eloquent est tout simplement fantastique et il vous soutiendra jusqu'à la fin.

Imaginez maintenant que vous construisez votre application depuis un certain temps maintenant et que vous souhaitez refactoriser certains de vos appels pour les rendre légèrement plus rapides. Passons un exemple à un exemple de la façon de rejoindre les requêtes pour obtenir le même résultat, en moins de temps.

Problème

Considérez un exemple de code ci-dessous, qui utilise le Utilisateur et Organisation table pour retourner le nom d'utilisateur.

$ user = user :: find ($ user_id);
$ organisation = organisation :: où ('id', $ user-> organisation_id) -> pluck ('name') -> first ();

L'exemple de code ci-dessus est assez simple à comprendre, mais il utilise deux appels distincts à la base de données. Le deuxième appel est évidemment fiable sur le premier, donc nous devons attendre que le premier se termine avant de pouvoir arriver au prochain.

Solution

Amélilons cet exemple de code en combinant les deux demandes en une seule requête.

$ user_with_organization = user :: where ('id', $ user_id)
-> gauche («organisations», «utilisateurs.organisation_id ',' = ',' organisations.identifiant')
-> Sélectionner ('utilisateurs.id ',' organisations.nom ') -> First ();

Maintenant, ce que nous venons de faire ci-dessus?
1. Tout d'abord, nous ciblons l'utilisateur en fonction du $ user_id, exactement la même requête que la première.
2. Ensuite, nous rejoignons les résultats avec le tableau des organisations à l'aide du tableau des utilisateurs Remplissez la requête de jointure gauche
3. La première requête a saisi le modèle d'utilisateur qui nous offre l'accès au organisation_id attribut.
4. Nous sélectionnons l'ID utilisateur et le nom de l'organisation.
5. Enfin, nous utilisons la méthode première (), qui garantit qu'une fois qu'elle trouve une seule organisation qui satisfait l'exigence, elle renverra instantanément le nom de l'organisation.

Comment fonctionne la jointure

Lorsque vous avez deux requêtes et que vous souhaitez laisser rejoindre la seconde, cela signifie que votre résultat final sera le résultat de votre première requête, où certains des résultats pourraient recevoir une correspondance avec la deuxième requête et avoir des données supplémentaires avec eux.

C'est ça. Maintenant, vous avez une meilleure compréhension du fonctionnement de la jointure de gauche. Utilisez-le pour combiner des requêtes liées à faire une seule demande à la base de données. Il semble assez simple, mais l'utilisation de la même méthode peut vous aider à optimiser les requêtes les plus complexes traitant de plusieurs tables.

Si vous avez des commentaires ou des suggestions, n'hésitez pas à me contacter.