Frage:
Wie kann man Ergebnisse bei der Verwendung effizient ordnen und begrenzen? eine SQL-Tabellenfunktion wie getStuff? Eine Bestellung und Einschränkung außerhalb der Funktion oder die Verwendung von plpgsql werden in Betracht gezogen. Gibt es einen besseren Ansatz?
Antwort:
Trotz ihres anfänglichen Erscheinens ist eine plpgsql-Funktion die bevorzugte Option für die Handhabung komplexerer Szenarien. Die Leistung kann nur dann beeinträchtigt werden, wenn plpgsql-Funktionen verschachtelt sind, sodass der Abfrageplaner den Code im Kontext der äußeren Abfrage nicht vollständig optimieren kann.
Eine vereinfachte plpgsql-Funktion, die übermäßige CASE vermeidet Klauseln:
CREATE OR REPLACE FUNCTION get_stuff(_param text, _orderby text, _limit int) RETURNS SETOF stuff AS $func$ BEGIN RETURN QUERY EXECUTE ' SELECT * FROM stuff WHERE col = ORDER BY ' || quote_ident(_orderby) || ' ASC LIMIT ' USING _param, _limit; END $func$ LANGUAGE plpgsql;
Verwendung:
SELECT * FROM get_stuff('hello', 'col2', 100);
Hinweise:
Das obige ist der detaillierte Inhalt vonWie kann man die Ergebnisse einer PostgreSQL-Tabellenfunktion effizient ordnen und begrenzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!