[firebase-br] Select demorado em tabela com 3 milhoes de registros
Otavio Benini
otavio.benini em gmail.com
Seg Fev 4 19:00:40 -03 2013
ajuda se o select for específico para os campos efetivamente necessários em
cada consulta, ou seja, não usar o '*';
ajuda se os campos mais utilizados na pesquisa estiverem indexados;
ajuda um cláusula WHERE que filtre o retorno
boa sorte
sds
*Otavio Benini*
*Benini Informática e Sistemas*
*(11) 9-8181-6553*
*(11) 4701-2797*
info em benini.com.br
otavio.benini em gmail.com
Em 4 de fevereiro de 2013 17:29, Rafael | SGBR Sistemas | <
rafael em sgbr.com.br> escreveu:
> 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