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

Eduardo Jedliczka jedyfb em gmail.com
Qua Ago 5 22:13:40 -03 2009


Se você usa Shift no seu cálculo, seriá muito complexo fazer isto via
STORED PROCEDURE, e será muito mais lento.

se usar UDF talvez o tempo caia significamente, mas não tenho como
estimar o quanto (não seria um chute qualquer... está mais para um chute
de gol à gol com todos os jogadores correndo em campo)

existem muitos exemplos para escrever uma UDF na web, acho que não terá
dificuldade, aliás, qual linguagem você está usando ? (se for C / C++ há
alguns exemplos na própria pasta do Firebird)

abraço

Eduardo Jedliczka

Em Qua, 2009-08-05 às 18:21 -0300, //---- Kelsie.Z.Marshall ----//
escreveu:

> 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