[firebase-br] Otimizar SP

francisco gamarra francisco.gamarra em gmail.com
Ter Jul 25 10:12:28 -03 2006


select
  cliente,
  sum(case when variedade = 1 then area else 0) end v1,
  sum(case when variedade = 2 then area else 0) end v2,
  sum(case when variedade = 3 then area else 0) end v3,
  sum(case when variedade = 4 then area else 0) end v4,
  sum(case when variedade = 5 then area else 0) end v5,
  sum(case when variedade = 6 then area else 0) end v6,
  sum(case when variedade = 7 then area else 0) end v7,
  sum(case when variedade = 8 then area else 0) end v8,
  sum(case when variedade = 9 then area else 0) end v9,
  sum(case when variedade = 10 then area else 0) end v10,
  sum(case when variedade = 11 then area else 0) end v11,
  sum(case when variedade = 12 then area else 0) end v12
from
  tabela
where
  mes between 1 and 7
group by
  cliente

2006/7/25, francisco gamarra <francisco.gamarra em gmail.com>:
>
>  vc pd me mandar a estrutura de suas sp's?
> eu vi q vc colocou var1..var12. Cada coluna corresponde a um mês ou o
> codvariedade?
>
> Em 25/07/06, Vânia <vania em informaticaomni.com.br> escreveu:
> >
> > Olá pessoal,
>
> estou com o seguinte problema: possuo uma tabela com a seguinte estrutura:
> CodCliente, CodVariedadade, Mes, Area.
>
> Possuo um relatório que faz a soma da área e que deverá ficar da seguinte
> forma:
>
> Cliente Var1 Var2...Var12 Total
> 1          12    4        21         50
> 2          15    6        18         60
>
> Nesse relatório o usuário escolhe quais as variedades ele deseja
> visualizar
> e qual a faixa de meses que serão considerados (por ex. de janeiro a
> julho)
>
> Para isso eu criei uma stored procedure que calcula a soma de area dentro
> do
> periodo desejado para uma determinada variedade, passando por parâmetro o
> mes inicial, o mes final e a variedade.
>
> Depois criei uma segunda stored procedure que chama q primeira para cada
> variedade q o usuário escolheu fazendo left join.Por ex.
>
> Select V1.Area, V2, Area....V10.Area
> from SP(1,7,3)  V1  left join
> SP(1,7,4)  V2 on V1.CodCliente = V2.CodCliente left join SP(1,7,5)   V3
> on....
>
> o problema é q a segunda SP demora horrores pra abrir (tipo uns 20 min),
> acredito q seja por causa dos left join...
>
> alguém saberia me dizer como posso fazer isso de outra maneira??? se eu
> devo
> mudar a modelagem do banco, se tem como, na segunda SP, chamar a primeira
> várias vezes passando parâmetros diferentes sem usar left/inner
> join...etc..
>
> já pesquisei na net e aqui na lista e não consegui encontrar nada
> parecido....
>
> Desde já agradeço
> Vânia
>
>
>
>
>
>
> ______________________________________________
> FireBase-BR ( www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>
>



Mais detalhes sobre a lista de discussão lista