非常に大きなテーブルの一連の行に対して非常に複雑な操作を行う必要があります。
操作 (JOIN、UNION、およびいくつかの ORDER BY に基づく「バックフィル」の null 属性) は、関数で行うのが最適なようです。行数を最小限に抑えるには、最初に WHERE 句が必要です。
これらはすべて Rails と通信するため、外側のレイヤーは VIEW である必要があります。
私が持っているバックフィルを差し引いたものは
CREATE OR REPLACE VIEW testing.for_sale_layouts_view
AS SELECT * from bestforsalelayout((select address_id from public.for_sale_layouts limit 1));
;
と
CREATE OR REPLACE FUNCTION bestforsalelayout(addr_id int)
RETURNS public.for_sale_layouts
AS $$
select * from public.for_sale_layouts where address_id = addr_id;
$$
LANGUAGE SQL IMMUTABLE;
のように呼ばれる
select * from testing.for_sale_layouts_view where address_id = <addr_id>;
この種の機能は機能しますが、for_sale_layouts によって返される行が複数ある場合、関数は何も返さず、シングルトン行は正常に機能します。
私は途方に暮れています。作業方向へのポインタは大歓迎です。