Olá André,

obrigado pela resposta.. O que parece acontecer é algo do tipo:

O usuário faz uma consulta de carros e pede para separar por marca.. A
maneira de mostrar eh assim:

Fiat
+ (vc pode abrir e ver os carros da Fiat)
  - Palio
  + (pode abrir e ver os Palio's disponíveis)
    - 2005 preto
    - 2006 amarelo
    - 2007 cinza
  - Uno
  +
     - 2003 Azul
     - 2009 Preto

Ford
 ...
 ...
 ...


Então, o resultado viria completo, mais ou menos assim:

Fiat | Palio | 2005 | Preto
Fiat | Palio | 2006 | Amarelo
Fiat | Palio | 2007 | Cinza
Fiat | Uno  | 2003 | Azul
Fiat | Uno  | 2009 | Preto
Ford ...
...
...

E no código ele vai tratando no Array...

Só que, para montar esse resultado formatado assim, ele usou mais de uma
tabela, com joins, group by, etc etc etc



A alternativa seria fazer uma consulta para saber as marcas (retornaria Fiat
e Ford), depois eu faria outra para retornar os carros daquela marca (pra
Fiat retornaria Palio e Uno), e por último eu buscaria quais {Palio's,
Uno's} tem no banco, retornando só (2005, Preto), (2006, Amarelo), (2007,
Cinza), etc..




Esse foi um exemplo relativamente simples, mas quando temos muitas tabelas,
muitas ligações, muitas restrições, eu acho que fazer essas consultas
pequenas e mais específicas podem ser mais rápidas no final do que fazer uma
consulta só que retorne tudo oragnizado e geral, organizando tudo no
código...


Eu imagino que cada um tenha o seu ponto do vista mesmo, e também imagino
que cada caso é um caso, mas essa questão surgiu durante a modelagem de um
novo sistema, e causou uma discordância pois ele queria uma modelagem que
permitisse ele a fazer uma consulta grande, enquanto eu preferi por uma
modelagem que organizasse melhor os dados mas ficaria muito difícil para ele
fazer essa mega-consulta....

Seria interessante se tivesse algum artigo sobre isso, com estudo de caso e
tal... Mas não achei nada numa busca rápida :/



2009/5/25 Andre Fernandes <fernandes.an...@gmail.com>

> Bom dia,
>
> esse é um assunto realmente complicado, muitas pessoas costumam discutir
> sobre isso.
> Se a conexão for permanente (ou seja, entre cada consulta não temos de
> abrir novas conexões), então realmente pequenas consultas são a melhor
> opção.
> Contudo, como é oneroso manter conexões abertas por muito tempo com o banco
> de dados, normalmente temos um impasse que precisa ser analisado caso a
> caso, visto que a abertura e fechamento de conexões é algo caro, contudo
> consultas muito pesadas também o são.
> Precisas verificar no caso em específico qual é menos caro para a
> performance do sistema, contudo eu sou adepto de evitar muitas conexões ao
> banco, principalmente se houver muitos usuário simultâneos previstos.
> O pensamento de teu programador teve uma falha apenas, a meu ver (isto é
> uma opnião pessoal, há quem pense diferente): os dados precisam sair do
> banco de dados já tratados (salvo formatação), para isso temos um banco com
> tantos recursos como o PostgreSQL. Mas volto a falar, isso é minha opnião,
> temos outras correntes e pessoas que discordam disso.
>
> Espero ter ajudado um pouco,
> Atenciosamente,
>
> 2009/5/25 Wagner Bonfiglio <wmbonfig...@gmail.com>
>
>> Olá senhores...
>>
>> Esses dias eu estava conversando com um dos programadores aqui da minha
>> empresa e percebi um hábito que ele tem e que eu não concordei muito, mas
>> fiquei com uma dúvida no ar...
>> (OBS: trata-se de programação WEB)
>>
>> Ele disse que prefere fazer uma consulta mais pesada mas que retorne o
>> máximo de dados possíveis de uma só vez, para que o tratamento seja feito
>> dentro do código e assim evitar o excesso de conexões ao banco...
>>
>> Eu quando era programador preferia fazer várias consultas leves, pensando
>> mais no sentido de evitar que uma consulta exigisse muito do banco de
>> dados...
>>
>> Vocês tem alguma opinião formada sobre isso? Ou melhor, existe alguma
>> verdade absoluta sobre melhor prática nesse sentido?
>>
>> Valeu,
>>    Wagner Bonfiglio
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
>
> --
> André de Camargo Fernandes
> Cel: (11) 7421-1379
>
> yellow belt <http://www.javablackbelt.com/UserView.wwa?userId=10305874> on 
> JavaBlackBelt
>
>
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a