Gibt es einen Unterschied? Ich weiß, dass SQL-Abfragen ihre Ausführungspläne genauso gut im Cache speichern lassen wie Funktionen.PostgreSQL-Leistung von Ad-hoc SQL vs Funktionen
foud I someone telling:
Leistung ist ein Problem, und wir vermuten Abfrage Planung könnte eine zugrunde liegende Ursache sein. Ich habe die Skripte von Ad-hoc-SQL zu einem Postgres-Funktionen (CREATE FUNCTION) umgeschrieben und wir sahen Serverlast gehen ziemlich runter.
Aber warum?
Mir wurde gesagt, dass Abfragen ihres Ausführungsplan [hier] (https://stackoverflow.com/questions/46677509/postgresql-function-execution-plan-cache-principle/46678190?noredirect=1#comment80305222_46678190) –
Im Cache @ YevgeniyAfanasyev: Das ist ein Missverständnis. Der Abfrageplan für Ad-hoc-SQL-Anweisungen wird nicht zwischengespeichert. Nur für vorbereitete Aussagen. –
Rechts. Ich ging davon aus, dass Sie vorbereitete Anweisungen verwenden, denn wenn Sie sich über die Einzelheiten darüber Gedanken machten, wie Pläne in Funktionen usw. zwischengespeichert werden, hätten Sie dies bereits als ersten Schritt zur Senkung der Planungskosten getan. Wenn die aufgerufene Funktion eine inlineable SQL-Funktion ist, könnte sie auch indirekt beim Aufrufen von plpgsql-Funktionen zwischengespeichert werden. –