[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