我需要对一个非常大的表中的一组行进行一些非常复杂的操作。
似乎操作(基于 JOIN、UNION 和几个 ORDER BY 的“回填”空属性)最好在函数中完成。为了最小化行数,我一开始就需要一个 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 返回的行不止一行,则该函数不返回任何内容,则单例行可以正常工作。
我很茫然,非常感谢您提供工作方向的指示。