[firebase-br] RES: RES: Maneira mais rápida... SQL ou CÓDIGO ?

Luis luisfirevb em gmail.com
Qui Ago 6 09:01:01 -03 2009


Amigos não sou especialista, mas acho um absurdo minha rotina de montagem
dos saldos parciais no controle de estoques dos 5 almoxarifados fixos e 62
móveis, com 5 mil itens de materiais, percorrendo toda movimentação mensal
(12 mil registros) levar +/- 3 horas para terminar, e isso feito em
MSAccess.

12 mil lançamentos x 5 mil materiais = 60 milhões registros
60 milhões x 67 almoxarifados = 4 bilhões e 20 milhões de repetições
Isso dentro de um laço que soma o valor lançado de cada item por cada
almoxarifado.

Agora uma rotina que leva 88 horas ou até 20 horas acredito ser
inimaginável. Se há um processo tão moroso assim, acredito que a estrutura
deva ser revista e alterada para tempo real, ou seja, a cada operação as
ações são todas realizadas imediatamente, assim poderia se perder alguns
milissegundos em cada operação, porém se ganharia essas horas ou dias ao
final, já que todas as informações estariam prontas em tempo real.

Luis



-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de //---- Kelsie.Z.Marshall ----//
Enviada em: quarta-feira, 5 de agosto de 2009 18:20
Para: lista em firebase.com.br
Assunto: Re: [firebase-br] RES: Maneira mais rápida... SQL ou CÓDIGO ?

Oi Rodrigo

Aqui o processamento levou 88 horas via código se eu conseguir reduzir este
tempo pela metade via SQL já estou satisfeito.

Eu não sei como fazer a chamada da SP, não entendo como funciona.

Dentro da SP tem que existir um select ou o select é antes na chamada da SP
?

[]'s

Kelsie

"Rodrigo A. de Freitas" 
<rodrigo em solucoeseinformatica.com.br> wrote 
in message news:33613.6380829432$1249505659 em news.gmane.org...
Kelsie,

O banco também não faz milagres. Manipular 80 milhões de registros do
primeiro ao último é algo que exigirá uma quantidade GIGANTESCA de tempo
para rodar.

Imagine que você faça uma stored procedure correndo do primeiro ao último
registro, executando sua função check_id, que pode ser uma outra SP ou uma
UDF. Se o banco levar um milissegundo por registro, você teria o seguinte:

80.000.000 de registros x 1 milissegundo = 80.000 segundos = 22,22 horas de
processamento!

Respondendo sua pergunta, de qualquer forma fazer isso internamente no banco
seria mais rápido. Se você desenvolvesse essa rotina via código em uma
linguagem de programação, você teria o tempo adicional de se fazer o fetch
dos registros pra memória da sua máquina para em seguida executar o seu
teste.


[]'s


Rodrigo A. de Freitas
Análise & Desenvolvimento

Soluções & Informática

-----Mensagem original-----
De: lista-bounces em firebase.com.br 
[mailto:lista-bounces em firebase.com.br] Em
nome de //---- Kelsie.Z.Marshall ----//
Enviada em: 5 de agosto de 2009 16:59
Para: lista em firebase.com.br
Assunto: [firebase-br] Maneira mais rápida... SQL ou CÓDIGO ?

Oi Pessoal

Meu primeiro post nesta lista.

Estou testando os limites do FB.

Criei uma enorme tabela com 80.000.000 de registro e inseri dados
aleatórios.

ID VARCHAR(20)
NOME VARCHAR(120)

Agora eu preciso fazer um calculo para verificar se a ID está correta em
cada registro.

Tentei primeiro fazer através do código mas levou muito tempo
(impraticável).

Meu código:

CHECK_ID(ID)
{
   ...varios calculos...
   return valido ou nao valido
}

  DM->IBQueryGen->First();
  while(!DM->IBQueryGen->Eof)
  {
     if(CHECK_ID(DM->IBQueryGen->FieldByName("ID")->AsString)
       ct_valid++;
     else
      ct_invalid++;
     DM->IBQueryGen->Next();
  }

Existe uma maneira de fazer isto via SQL com procedure, trigger ou UDF,
ainda estou meio perdido nos conceitos.

Thanks

Kelsie



______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Nenhum vírus encontrado nessa mensagem recebida.
Verificado por AVG - www.avgbrasil.com.br
Versão: 8.5.392 / Banco de dados de vírus: 270.13.44/2283 - Data de
Lançamento: 08/05/09 05:57:00


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa



______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista