Em 28 de abril de 2011 14:28, Fábio Gibon - Comex System
<[email protected]> escreveu:
> Que tal assim:
>
> SELECT distinct on (p.pessoa_id) p.pessoa_id,
> p.nome,
> f.fone
> FROM pessoas p,
> fones_pessoas
> WHERE
> p.pessoa_id=f.pessoa_id;
>
> abraços
>
> Fábio Henrique Gibon
>
Eu havia testado assim também mas o explain fez eu buscar alternativas
até chegar a que eu enviei anteriormente:
--------------
explain select pes.*, (select numero from telefone where id_pessoa =
pes.id limit 1) telefone
from pessoa pes;
Seq Scan on pessoa pes (cost=0.00..1663.20 rows=320 width=222)
SubPlan 1
-> Limit (cost=0.00..5.16 rows=1 width=58)
-> Seq Scan on telefone (cost=0.00..20.63 rows=4 width=58)
Filter: (id_pessoa = $0)
-------------- Adaptado para meu teste...
explain SELECT distinct on (p.id) p.id,
p.nome,
f.numero
FROM pessoa p,
telefone f
WHERE
p.id=f.id_pessoa;
Unique (cost=88.75..93.00 rows=320 width=280)
-> Sort (cost=88.75..90.87 rows=850 width=280)
Sort Key: p.id
-> Hash Join (cost=17.20..47.39 rows=850 width=280)
Hash Cond: (f.id_pessoa = p.id)
-> Seq Scan on telefone f (cost=0.00..18.50 rows=850 width=62)
-> Hash (cost=13.20..13.20 rows=320 width=222)
-> Seq Scan on pessoa p (cost=0.00..13.20
rows=320 width=222)
--------------
Eu também não entendi o pq do max(fone) e max(mail).
--
Marcone Peres - DBA
http://www.linkedin.com/in/marconeperes
(61) 8146-0028
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral