Depois que testei o PostGreSQL 8.4, (ultima versão), acho uma exelente, ferramenta para melhora de segunraça e velocidade.
2009/8/14 Nicolas <nico...@qualitysystem.com.br> > > > Pessoal, > > a function SQL (MS-SQL) abaixo é chamada de dentro de um sistema em Delphi, > é um volume grande de informações mas o cliente quer que o sistema fique > mais rápido, > alguém tem alguma sugestão que possa otimiza-la e deixá-la mais rápida ? > > CREATE function CEstoque (@Produto Int, @Empresa Int) > > returns Money > > as > > begin > Declare @Entradas Money > Declare @Saidas Money > Declare @Ajustes Money > Declare @Inicio Money > Declare @Data DateTime > > Select @Saidas=(Select Sum( (Case IsNull(N.Entrada,'N') When 'S' Then > I.Qtde Else 0 End) - (Case IsNull(N.Entrada,'N') When 'N' Then I.Qtde Else 0 > End) ) > From NfItens I > Left Join Nf D On D.Nrodoc=I.Nrodoc and D.Serie=I.Serie and > D.Empresa=I.Empresa > Left Join Produtos PP On PP.Codigo=I.Calitem > Left Join NatOper N On N.Chave=D.NatOper > Where (i.calit...@produto or IsNull(Pp.ProdutoBaixa,0)=...@produto) > and d.empre...@empresa > and D.DataRef>=(Select Max(Data) > From EstoqueInicio > Where produ...@produto)), > @Entradas=(Select Sum(I.Qtde) > From EntradaIte I > Left Join Entrada D On D.Nrodoc=I.Nrodoc and D.Fornece=I.Fornece > Where d.fili...@empresa > and i.mater...@produto > and D.Entrada>=(Select Max(Data) > From EstoqueInicio > Where produ...@produto)), > @Ajustes=(Select Sum( (Case I.ES When 'E' Then I.Qtde Else 0 End) - (Case > I.Es When 'S' Then I.Qtde Else 0 End) ) > From AjusteEst I > Where i.codi...@produto > and i.fili...@empresa > and I.Data>=(Select Max(Data) From EstoqueInicio Where produ...@produto)), > @Inicio=(Select D.Qtde > From EstoqueInicio D > Where d.produ...@produto > and d.empre...@empresa > and D.Data=(Select Max(Data) From EstoqueInicio Where produ...@produto)) > From Produtos P > Where codi...@produto > > Return > IsNull(@Inicio,0)+IsNull(@Entradas,0)+IsNull(@Saidas,0)+IsNull(@Ajustes,0); > > END > > [As partes desta mensagem que não continham texto foram removidas] > > > -- Leonardo Quinino [As partes desta mensagem que não continham texto foram removidas]