PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Kein Ausführungsplan-Caching für dynamisches SQL in PostgreSQL 9.4?

Pro Dokumentation:

Das ist eine sinnvolle Funktion . Die Natur einer dynamischen Abfrage ist, dass sie ihre Struktur von Aufruf zu Aufruf ändert.

Wenn Sie dieselbe Abfrage wiederholt aufrufen möchten (optional mit unterschiedlichen Parametern), verwenden Sie vorbereitete Anweisungen :

Oder verwenden Sie einfachen (nicht dynamischen) SQL-Code innerhalb von plpgsql-Funktionen, diese werden ebenfalls wie vorbereitete Anweisungen behandelt.

In Ihrem Fall , ist es möglicherweise am besten, PREPARE Abfragen dynamisch. Wir hatten hier einen sehr ähnlichen Fall:

Außerdem ist es extrem ungewöhnlich, dass eine Abfrage 1,4 Sekunden für die Planung und nur 0,1 Sekunden für die Ausführung benötigt. Kann sich lohnen nachzuschauen. Möglicherweise gibt es Möglichkeiten zur Optimierung. Wie bei join_collapse_limit :

Verwandte: