[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