Gregory Stark escreveu:
André Volpato <andre.volpato@xxxxxxxxxxxxxxxxxxxxx> writes: Thanks Greg, I rewrote the query with a explicit join, removing the function. The planner uses a nestloop, becouse its only a few rows, none in the end. (A HashAggregate is used to join the same query, running against a bigger database) The good side about the function is the facility to write in a dinamic application. We´re gonna change it and save some bucks... Its an impressive win, look: HashAggregate (cost=19773.60..19773.61 rows=1 width=160) (actual time=0.511..0.511 rows=0 loops=1) -> Nested Loop (cost=19143.21..19773.58 rows=1 width=160) (actual time=0.509..0.509 rows=0 loops=1) Join Filter: ((b.benef_cod_arquivo)::text = (internacoes.cod_benef)::text) -> Bitmap Heap Scan on internacoes (cost=13.34..516.70 rows=1 width=8) (actual time=0.507..0.507 rows=0 loops=1) Recheck Cond: ((((ano * 100) + mes) >= 200805) AND (((ano * 100) + mes) <= 200806)) Filter: (tipo_internacao = 'P'::bpchar) -> Bitmap Index Scan on iinternacoes4 (cost=0.00..13.34 rows=708 width=0) (actual time=0.143..0.143 rows=708 loops=1) Index Cond: ((((ano * 100) + mes) >= 200805) AND (((ano * 100) + mes) <= 200806)) -> Limit (cost=19129.87..19209.26 rows=2117 width=48) (never executed) -> HashAggregate (cost=19129.87..19209.26 rows=2117 width=48) (never executed) -> Bitmap Heap Scan on bds_beneficiario b (cost=822.41..18009.61 rows=56013 width=48) (never executed) Recheck Cond: ((benef_referencia >= 200805) AND (benef_referencia <= 200806)) -> Bitmap Index Scan on ibds_beneficiario2 (cost=0.00..808.41 rows=56013 width=0) (never executed) Index Cond: ((benef_referencia >= 200805) AND (benef_referencia <= 200806)) Total runtime: 0.642 ms -- []´s, ACV |