> create or replace function indf(anyelement, anyelement) returns anyelement as > $$ > select $1 = $2 or ($1 is null and $2 is null); > $$ language sql; > > CREATE VIEW view_circuit_with_status AS ( > SELECT r.*, > s.circuit_status, > s.customer_id AS s_customer_id, > p.line_speed, > p.customer_id AS p_customer_id > FROM view_circuit r > JOIN view_circuit_product_main s > ON r.circuit_id = s.circuit_id > AND indf(r.customer_id, s.customer_id) > JOIN view_circuit_product p > ON r.circuit_id = p.circuit_id > AND indf(r.customer_id, s.customer_id) > > merlin
This doesn't do much good. This doesn't tell the planner that the 3 customer_ids are actually of same value, and it therefore can't filter them as it sees fit.