Zurück zu den Datenbanken-FAQs
HILFECENTER · FAQDatenbanken1 Min. Lesezeit

Wie reduziere ich N+1-Datenbankabfragen in einer Anwendung?

Das N+1-Muster entsteht, wenn der Code eine Liste lädt und für jedes Element eine weitere Abfrage ausführt. Dadurch steigt die Abfragezahl mit der Ergebnisgröße und die Latenz kann selbst bei schnellen Einzelabfragen wachsen. Finden Sie den wiederholten Zugriff und laden Sie verknüpfte Daten mit einer begrenzten Abfragezahl.

Datenbanken

Wiederholte Abfragen finden

Nutzen Sie Abfrageprotokolle, Tracing oder Datenbankmetriken, um Anfragen mit vielen ähnlichen Statements zu erkennen. Vergleichen Sie Abfragezahl und zurückgegebene Datensätze und ermitteln Sie, welche Beziehung oder welches Feld die wiederholte Suche auslöst.

Ein kleiner Entwicklungsdatensatz kann das Problem verbergen. Reproduzieren Sie es mit realistischen Listengrößen und prüfen Sie, ob Serialisierung, Templates oder Hilfsfunktionen Beziehungen implizit abrufen.

Verknüpfte Daten gezielt laden

Je nach Datenmodell und Datenbank eignen sich ein Join, eine gebündelte Suche mit passender Schlüsselmenge oder Eager Loading des ORM. Vermeiden Sie sowohl Abfragen je Zeile als auch übergroße Ergebnisse mit duplizierten Daten.

Messen Sie Abfragezahl, Ergebniszeilen, Antwortgröße und Latenz vorher und nachher. Sichern Sie repräsentative Listengrößen ab und erhalten Sie Paginierung sowie Berechtigungsfilter bei der Änderung.

Zurück zu den Datenbanken-FAQs