Maison > développement back-end > Golang > Comment la fonction de préchargement de GORM peut-elle optimiser les requêtes avec des associations ?

Comment la fonction de préchargement de GORM peut-elle optimiser les requêtes avec des associations ?

DDD
Libérer: 2024-12-10 02:47:09
original
116 Les gens l'ont consulté

How Can GORM's Preload Function Optimize Queries with Associations?

Associations ORM GORM Golang

Dans Go, GORM est un ORM populaire pour interagir avec les bases de données. Lorsque vous travaillez avec des associations dans GORM, il est important d'établir des relations appropriées entre les structures. Considérez les structures suivantes représentant une ville et un lieu :

type Place struct {
    ID          int
    Name        string
    Town        Town
}

type Town struct {
    ID   int
    Name string
}
Copier après la connexion

Ici, chaque ville peut avoir plusieurs lieux, tandis que chaque lieu appartient à une seule ville.

Supposons que vous souhaitiez interroger tous les lieux. et leurs informations sur la ville associée. Vous trouverez ci-dessous un exemple de base de données et le résultat attendu :

Tableau des lieux

id name town_id
1 Place1 1
2 Place2 1

Tableau des villes

id name
1 Town1

Résultat attendu :

id name Town
1 Place1 Town1
2 Place2 Town1

Initial Implémentation

L'implémentation initiale tente d'interroger tous les lieux mais ne parvient pas à inclure les informations de ville associées :

db, _ := gorm.Open("sqlite3", "./data.db")
defer db.Close()

places := []Place{}
db.Find(&places)
fmt.Println(places)
Copier après la connexion

Utilisation du préchargement

La solution optimale implique d'utiliser la méthode de préchargement de GORM avant le Trouver une opération. Cela garantit que les données associées sont incluses dans la requête principale, éliminant ainsi le besoin de requêtes supplémentaires :

db.Preload("Town").Find(&places)
Copier après la connexion

Avec cette approche, seules deux requêtes seront déclenchées, ce qui améliore considérablement les performances :

Journal des requêtes :

Time Query
22.24ms SELECT * FROM "places"
0.92ms SELECT * FROM "towns" WHERE "id" in ('1')

Conclusion

Lorsque vous travaillez avec des associations dans GORM, il est crucial pour définir correctement les clés étrangères. L'utilisation de Preload vous permet d'inclure efficacement les informations associées dans vos requêtes, en préservant l'évolutivité et en optimisant les performances.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal