[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