Neben der syntaktischen Zucker- und Ausdruckskraft sind das die Unterschiede in der Laufzeit-Effizienz. Ich meine, plpgsql kann schneller sein als, sagen wir plpythonu oder pljava? Oder sind sie alle ungefähr gleich?
Wir verwenden gespeicherte Prozeduren für die Erkennung fast doppelter Datensätze von Personen in einer mittelgroßen Datenbank (ungefähr 10 Millionen Datensätze)
plpgsql bietet größere Typsicherheit Ich glaube, Sie müssen explizite Umwandlungen durchführen, wenn Sie Operationen mit zwei verschiedenen Spalten ähnlichen Typs ausführen möchten, wie varchar und text oder int4 und int8. Dies ist wichtig, denn wenn Ihr gespeicherter Proc Index verwenden muss, erfordert Postgres, dass die Typen genau zwischen den Join-Bedingungen übereinstimmen (edit: auch für Gleichheitsprüfungen, denke ich).
In den anderen Sprachen gibt es dafür vielleicht eine Möglichkeit, ich habe sie nicht benutzt. Auf jeden Fall hoffe ich, dass Sie dadurch einen besseren Ausgangspunkt für Ihre Untersuchung erhalten.
plpgsql ist sehr gut in SQL integriert - der Quellcode sollte sehr sauber und lesbar sein. Für SQL-Sprachen wie PLJava oder PLPython müssen SQL-Anweisungen isoliert werden - SQL ist kein Teil der Sprache. Du musst also etwas mehr Code schreiben. Wenn Ihre Prozedur viele SQL-Anweisungen enthält, sollte plpgsql-Prozedur sauberer, kürzer und etwas schneller sein. Wenn Ihre Prozedur keine SQL-Anweisungen enthält, können Prozeduren von externen Sprachen schneller sein - aber externe Sprachen (interpretieren) benötigen einige Zeit für die Initialisierung - für einfache Aufgaben sollten Prozeduren in SQL- oder plpgsql-Sprache daher schneller sein.
Externe Sprachen werden verwendet, wenn Sie einige Funktionen wie Zugriff auf das Internet, Zugriff auf das Dateisystem benötigen - Ссылка
Was ich weiß - Leute benutzen normalerweise eine Kombination von PL Sprachen - (SQL, plpgsql, plperl) oder (SQL, plpgsql, plpython).
Ohne tatsächliche Tests zu testen, würde ich erwarten, dass plpgsql etwas effizienter ist als andere Sprachen, weil es klein ist. Denken Sie daran, dass SQL-Funktionen wahrscheinlich noch schneller als plpgsql sind, wenn eine Funktion einfach genug ist, dass Sie sie nur in SQL schreiben können.
Tags und Links postgresql stored-procedures plpgsql