質問:
を使用する場合、結果を効率的に順序付けおよび制限するにはどうすればよいですかgetStuff のような SQL テーブル関数ですか?関数外での順序付けや制限、またはplpgsqlを使用することを検討しています。もっと良いアプローチはありますか?
答え:
最初の外観にもかかわらず、plpgsql 関数は、より複雑なシナリオを処理するための推奨オプションです。パフォーマンスが低下する可能性があるのは、plpgsql 関数がネストされている場合のみであり、クエリ プランナーが外側のクエリのコンテキスト内でコードを完全に最適化できません。
過剰な CASE を回避する簡素化された plpgsql 関数句:
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;
使用法:
SELECT * FROM get_stuff('hello', 'col2', 100);
注:
以上がPostgreSQL テーブル関数からの結果を効率的に順序付けして制限するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。