[firebase-br] Maneira mais rápida... SQL ou CÓDIGO ?
Sandro Souza
escovadordebits em gmail.com
Sex Ago 14 01:15:10 -03 2009
Bom dia/tarde Kelsie.
Grande Kelsie, baseado na sua stored procedure "VALIDA_ID", e supondo que o
resultado "ID_VALIDA" retorne 0 (zero) para "inválido" ou 1 (um) para
"válido", faço aqui a minha humilde sugestão.
Primeiro, obtenha a quantidade total de registros:
SELECT COUNT(*)FROM TABELA_DE_TESTE
Agora, vamos obter a quantidade de IDs válidas:
SELECT SUM(SELECT ID_VALIDA FROM VALIDA_ID(ID))FROM TABELA_DE_TESTE
Como você já tem o total geral (no primeiro passo) e o total de IDs válidas
(no segundo passo), obtenha o total de IDs inválidas pela diferença: Total
geral - Total de IDs válidas.
Para executar uma stored procedure sem parâmetros de retorno, basta executar
o comando SQL:
EXECUTE PROCEDURE MINHA_PROCEDURE(PARAMETRO1, ....)
Para executar uma stored procedure com parâmetros de retorno, basta executar
um SELECT nela:
SELECT * FROM MINHA_PROCEDURE(PARAMETRO1, ....)
Gostei muito de sua iniciativa em fazer um teste desses.
Seria interessante se fizessemos esse mesmo teste em outros SGBDs só para
compararmos a performance do Firebird em relação aos outros SGBDs nesse tipo
de situação.
Espero ter ajudado mais que atrapalhado. :D
2009/8/5 //---- Kelsie.Z.Marshall ----// <kelsie.z.marshall em gmail.com>
> Oi Gustavo
>
> Shift pra cá Shift pra lá, somo diminui multiplica, vários calculos,
> hipotéticamente falando.
>
> Usando os mesmo cálculos onde é mais rápido ?
>
> Estou usando o IBConsole mas não consigo me acertar nos parametros e na
> chamada da procedure, mas já não sei se este é o caso PROCEDURE.
>
> DROP PROCEDURE VALIDA_ID;
>
> COMMIT WORK;
> SET AUTODDL OFF;
> SET TERM ^ ;
>
> CREATE PROCEDURE "VALIDA_ID"
> (
> "ID_ENT" VARCHAR(20)
> )
> RETURNS
> (
> "ID_VALIDA" SMALLINT
> )
> AS
> BEGIN EXIT; END ^
> ALTER PROCEDURE " VALIDA_ID "
> (
> " ID_ENT" VARCHAR(20)
> )
> RETURNS
> (
> " ID_VALIDA" SMALLINT
> )
> AS
> DECLARE VARIABLE tbd1 INTEGER;
> BEGIN
>
>
> /*aqui calculus e retorno*/
>
>
> END
> ^
>
> SET TERM ; ^
> COMMIT WORK;
> SET AUTODDL ON;
>
>
>
> Não sei como chamar a PROCEDURE .
>
>
> Abraço
>
> Kelsie
>
>
> "Gustavo Moda" <gustavo.moda em gmail.com> wrote in message
> news:795edc730908051311h43d956adhedfcdd1c9f95d39d em mail.gmail.com...
>
> 2009/8/5 //---- Kelsie.Z.Marshall ----// <kelsie.z.marshall em gmail.com>
>
> 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.
>>
>>
> Que cálculos são esses?
> Pelo BANCO é mais rápido, mas você precisa olhar o plan que seus cálculos
> estão executando.
>
> O que vc pretende?
> ______________________________________________
> 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