[firebase-br] RES: Select demorado em tabela com 3 milhoes de registros

Felix - SOL Informática felix em solsistemas.com
Seg Fev 4 19:12:51 -03 2013


3.000.000, todos os campos, toda a tabela (sem filtros) e era para ser
rápido? 

Refaça as querys e traga da base somente o necessário - não tem mágica ;-)

Francisco Felix
www.solsistemas.com

-----Mensagem original-----
De: lista [mailto:lista-bounces em firebase.com.br] Em nome de Rafael | SGBR
Sistemas |
Enviada em: segunda-feira, 4 de fevereiro de 2013 16:30
Para: FireBase
Assunto: [firebase-br] Select demorado em tabela com 3 milhoes de registros
Prioridade: Alta
Sensibilidade: Confidencial

Bom dia pessoal, estou com um problema pra resolver, tem um cliente meu que
faz tempo que reclama de lentidão no sistema, eu sempre me desviava dizendo
que era problema de maquina e tal, até que resolvi ir ver oque estava
acontecendo, ocorre que o cara tem mais de 3 milhões de registros em uma
tabela, fiz um select: Select * from tcadastrocliente por dentro do
iboconsole, e o resultado é 32 segundos pra mostrar na tela 3.167.763
registros. Por isso ele reclama, me imagino dando soco no computador pra ele
ir mais rápido kkk, bom a coisa é séria, e venho pedir a ajuda dos colegas
que conhecem mais que eu, a estrutura da tabela segue abaixo:

 

/* Table: TCADASTROCLIENTE, Owner: SYSDBA */

 

CREATE TABLE "TCADASTROCLIENTE" 

(

  "CONTROLE"   INTEGER,

  "DATACADASTRO"       DATE,

  "DATAULTIMOENVIO"               DATE,

  "QTDENVIADOS"           INTEGER,

  "ARQUIVOENVIADO"  VARCHAR(500),

  "CODIGOGRUPO"         INTEGER NOT NULL,

  "GRUPO"          VARCHAR(100) NOT NULL,

  "CAMPANHA"                VARCHAR(500),

  "FONE1"            VARCHAR(50),

  "FONE2"            VARCHAR(50),

  "HORAENVIO"                TIME,

  "EMAIL"            VARCHAR(100),

  "CLIENTE"         VARCHAR(100),

  "CODULTIMACAMPANHA"      INTEGER,

  "CODIGOFILIAL"            INTEGER NOT NULL,

  "HORACADASTRO"       TIME NOT NULL,

  "DATANASCIMENTO" DATE,

  "REJEITADO"   VARCHAR(3),

  "ANIVERSARIOENVIADO"         VARCHAR(50),

  "QTDERETORNADOS"  INTEGER NOT NULL,

  "CLIENTECOMPROU"  VARCHAR(3),

CONSTRAINT "PK_TCADASTROCLIENTE" PRIMARY KEY ("CONTROLE")

);

SET TERM ^ ;

 

 

/* Triggers only will work for SQL triggers */

 

CREATE TRIGGER "TCADASTROCLIENTE_BI" FOR "TCADASTROCLIENTE" 

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

  IF (NEW.CONTROLE IS NULL) THEN

    NEW.CONTROLE = GEN_ID(GEN_TCADASTROCLIENTE_ID,1);

END

^

 

CREATE TRIGGER "TCADASTROCLIENTE_BIU0" FOR "TCADASTROCLIENTE" 

ACTIVE BEFORE INSERT OR UPDATE POSITION 0

AS

begin

  /* Trigger text */

  if (new.qtderetornados is null) then

    new.qtderetornados = 0;

end

^

 

COMMIT WORK ^

SET TERM ;^

 

Oque eu posso fazer pra melhorar esse select?

Obrigado desse já pela ajuda.

Rafa

 

______________________________________________
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