[firebase-br] C++Builder

//---- Kelsie.Z.Marshall ----// kelsie.z.marshall em gmail.com
Qua Ago 5 22:32:48 -03 2009


Eduardo

Meu exemplo foi hipotético na realidade não existe calculo algum só quero 
estabelecer o que é mais rápido VIA CÓDIGO OU SQL.

Estou tentando fazer via SP mas não consigo.

Não entendo a chamada da SP. Como aplicar o conteudo da procedure a cada 
linha da tabela ?

select "CHECK_ID"(ID) from TAB; ?????   Não funciona.

Preciso de função e função não tem no firebird.

Estou usando CodeGear 2009 C++Builder.

Kelsie



"Eduardo Jedliczka" <jedyfb em gmail.com> wrote 
in message news:1249521220.2115.5.camel em edujed.utfpr.edu.br...
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
______________________________________________
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