Heim > Backend-Entwicklung > Golang > Wie kann die Vorladefunktion von GORM Abfragen mit Assoziationen optimieren?

Wie kann die Vorladefunktion von GORM Abfragen mit Assoziationen optimieren?

DDD
Freigeben: 2024-12-10 02:47:09
Original
113 Leute haben es durchsucht

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

GORM Golang ORM Associations

In Go ist GORM ein beliebtes ORM für die Interaktion mit Datenbanken. Bei der Arbeit mit Assoziationen in GORM ist es wichtig, die richtigen Beziehungen zwischen Strukturen herzustellen. Betrachten Sie die folgenden Strukturen, die eine Stadt und einen Ort darstellen:

type Place struct {
    ID          int
    Name        string
    Town        Town
}

type Town struct {
    ID   int
    Name string
}
Nach dem Login kopieren

Hier kann jede Stadt mehrere Orte haben, während jeder Ort nur zu einer Stadt gehört.

Angenommen, Sie möchten alle Orte abfragen und die zugehörigen Stadtinformationen. Nachfolgend finden Sie eine Beispieldatenbank und das erwartete Ergebnis:

Ortstabelle

id name town_id
1 Place1 1
2 Place2 1

Städtetabelle

id name
1 Town1

Erwartetes Ergebnis:

id name Town
1 Place1 Town1
2 Place2 Town1

Anfänglich Implementierung

Die anfängliche Implementierung versucht, alle Orte abzufragen, schließt jedoch keine zugehörigen Ortsinformationen ein:

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

places := []Place{}
db.Find(&places)
fmt.Println(places)
Nach dem Login kopieren

Verwendung von Preload

Die optimale Lösung besteht darin, die Preload-Methode von GORM vor dem zu verwenden Betrieb finden. Dadurch wird sichergestellt, dass verwandte Daten in der Hauptabfrage enthalten sind, sodass keine zusätzlichen Abfragen erforderlich sind:

db.Preload("Town").Find(&places)
Nach dem Login kopieren

Bei diesem Ansatz werden nur zwei Abfragen ausgelöst, was die Leistung erheblich verbessert:

Abfrageprotokoll:

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

Fazit

Bei der Arbeit mit Assoziationen in GORM ist es von entscheidender Bedeutung Fremdschlüssel richtig definieren. Durch die Verwendung von Preload können Sie zugehörige Informationen effizient in Ihre Abfragen einbeziehen und so die Skalierbarkeit bewahren und die Leistung optimieren.

Das obige ist der detaillierte Inhalt vonWie kann die Vorladefunktion von GORM Abfragen mit Assoziationen optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage