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

Zottis bzottis em ig.com.br
Seg Fev 4 21:59:21 -03 2013


Concordo com o pessoal, na minha humilde opinião, dificilmente ele precisara
de todos esses clientes de uma só vez, então refaça a query usando o where
Select campo1, campo2, campoN  from clientes where cod_Cliente <= 100000

Ou ....where cod_cliente between 1 and 100000

Mas se realmente for necessário, use incices para tal select mas essa
quantidade de registros é normal demorar, se o cliente quiser mais rápido
que 32 segundo para 3.000.000.000
Então ele terá que comprar um sup[er, mega power servidor com uns trocentos
processadores e mesmo assim vai ficar na casa dos 20 segundos.

Por isso o pessoal falou para restringir o select colocando filtros
Tenho uma tabela que retorna mais de 100.000 registros em menos de 2
segundos, mas se você somar verá que no final daria o mesmo tempo que o seu
select

Espero que ajude.

Zottis

-----Mensagem original-----
De: lista [mailto:lista-bounces em firebase.com.br] Em nome de Felix - SOL
Informática
Enviada em: segunda-feira, 4 de fevereiro de 2013 19:13
Para: 'FireBase'
Assunto: [firebase-br] RES: Select demorado em tabela com 3 milhoes de
registros
Sensibilidade: Confidencial

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


______________________________________________
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