[firebase-br] Tempo diminuindo...
//---- Kelsie.Z.Marshall ----//
kelsie.z.marshall em gmail.com
Sex Ago 7 13:20:27 -03 2009
WORK IN PROGRESS
Não é o resultado final.
A idéia é subtituir a comparação por uma função, é dificil falar
hipoteticamente aqui.
Vamos dar um exemplo concreto que fica mais facil de entender imagine uma
tabela com 80 milhões de registros com duas colunas
CREATE TABLE "GRANDE_TABELA"
(
"CNPJ" VARCHAR(14),
"RAZAO_SOCIAL" VARCHAR(120)
);
Pronto um exemplo bem concreto não tem como se perder agora.
A tabela está toda preenchida.
insert into GRANDE_TABELA(CNPJ, RAZAO_SOCIAL) values
('00000000000000','Empresa 1');
insert into GRANDE_TABELA(CNPJ, RAZAO_SOCIAL) values
('12243345345000','Empresa 80.000.000');
Agora queo sabr o que é mais rápido fazer a verificação via código dando um
scan na tabela ou fazendo uma função de verificação de CNPJ.
Pelo por SP é bem mais rápido pelo levantado até agora.
Kelsie
PS: Alguém já ouviu fazerdo bancode dados de 1 TETRA gerenciado pelo
FIREBIRD? Qual o maior (Em tamanho de bytes) bando de dados que você oviu
falar gerenciado pelo firebird ?
"Adriano Ferreira" <aerreira68 em gmail.com>
wrote in message news:9709D68254734F979C60C97ED187F391 em principal...
Rapaz, pelo que entendi, vc está comparando cada registro de sua tabela com
todos os demais registros existentes e repete isso zilhões de vezes. Isso é
um completo absurdo em qualquer sistema.
Basta colocar uma chave primária única na sua tabela, o que garantirá que
não existem chaves duplicadas, então esse seu teste se torna inútil.
Se sua tabela já contém dados, então crie uma chave primaria nela que
surgirão "key violation" em todos os que estiverem duplicados.
_
Adriano Ferreira
----- Original Message -----
From: //---- Kelsie.Z.Marshall ----//
To: lista em firebase.com.br
Sent: Friday, August 07, 2009 12:33 AM
Subject: Re: [firebase-br] Tempo diminuindo...
Consegui alguma coisa
COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;
/* Stored procedures */
CREATE PROCEDURE "TEST_ID"
(
"IN_IDENT" VARCHAR(20),
"IN2" VARCHAR(20)
)
RETURNS
(
"RET" SMALLINT
)
AS
BEGIN EXIT; END ^
ALTER PROCEDURE "TEST_ID"
(
"IN_IDENT" VARCHAR(20),
"IN2" VARCHAR(20)
)
RETURNS
(
"RET" SMALLINT
)
AS
BEGIN
RET = -1;
FOR SELECT IDENT FROM BIG_TABLE INTO :IN_IDENT DO
BEGIN
IF ( IN_IDENT = IN2 ) THEN
RET = 1;
ELSE
RET = 0;
SUSPEND;
END
END
^
SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;
______________________________________________
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