Question :
Comment peut-on ordonner et limiter efficacement les résultats lors de l'utilisation une fonction de table SQL comme getStuff ? L'ordre et la limitation en dehors de la fonction ou l'utilisation de plpgsql sont envisagés. Existe-t-il une meilleure approche ?
Réponse :
Malgré son apparence initiale, une fonction plpgsql est l'option privilégiée pour gérer des scénarios plus complexes. Les performances ne peuvent souffrir que lorsque les fonctions plpgsql sont imbriquées, où le planificateur de requêtes ne peut pas optimiser complètement le code dans le contexte de la requête externe.
Une fonction plpgsql simplifiée qui évite un CASE excessif clauses :
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;
Utilisation :
SELECT * FROM get_stuff('hello', 'col2', 100);
Remarques :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!