[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