[firebase-br] RES: Pesquisa Muito lenta

.:: Eder Sousa ::. edersousa em gmail.com
Ter Jan 22 17:10:29 -03 2008


Zottis.. eu tive um problema parecido, e resolvi fazendo um backup/restore
... soh que no meu caso era muiiitos registros.

-----Mensagem original-----
De: lista-bounces em firebase.com.br
[mailto:lista-bounces em firebase.com.br]Em nome de Zottis
Enviada em: terça-feira, 22 de janeiro de 2008 14:47
Para: lista em firebase.com.br
Assunto: [firebase-br] Pesquisa Muito lenta


Pessoal, tenho Select que Rodando pelo IBexpert, leva uns 6 segundos, e
quando roda no dephi 7 com MDO, e FB 2.0.3 leva uns 2 MINUTOS isso em um
Cliente e Não são muitos registros, o interessante é que eu tenho um outro
banco com a mesma estrutura; Que não demora.

O SQL é este:
         With Busca do
           Begin
           Close;
          SelectSQL.Clear;
          SelectSQL.Add(' select  CR.ContaNo, CR.ClienteNo,
CR.Data,CR.Vencimento, CR.Saldo,CR.DIASATRASO, ');
          SelectSQL.Add(' CR.SITUACAO, CR.VLRJUROS, CR.Valor, CR.RegistroNo,
CR.Pago, CR.TotalPago, CR.DuplicataNo, ');
          SelectSQL.Add(' CR.desconto, CR.UsuarioNo, CR.DATAPGTO, CR.Juros,
CR.OBS, CR.PedidoNo, CR.DESPESAS_EXTRAS, ');
          SelectSQL.Add(' CR.dataPedido, CR.NF, CR.LojaNo, CR.TotalPedido,
CR.Comprador, CR.FaturaNo, CR.Desconto_Taxa, ');

          SelectSQL.Add(' C.RazaoSocial as RazaoSocial, C.fone as Fone,
C.Celular as Celular, C.fax as Fax, ');
          SelectSQL.Add(' C.Endereco as Endereco, C.CasaNO as CasaNo,
C.bairro as Bairro, C.Cep as CEP, ');
          SelectSQL.Add(' C.cidade as Cidade, C.Pais as Pais, C.NomeFantasia
as nomeFantasia, C.UF as UF, ');
          SelectSQL.Add(' C.CNPJ as CNPJ, C.complemento as complemento,
C.contato as contato, C.email as email, ');
          SelectSQL.Add(' C.CPF as CPF ');
          SelectSQL.Add(' from CtaRec CR ,Clientes C where CR.ClienteNo =
C.ClienteNo and CR.Deletado = ''N'' and');

                       if radioGroup1.ItemIndex = 1 then
                          begin
                           SelectSQL.Add(' CR.Pago = ''S'' and');
                          end else
                        if radioGroup1.ItemIndex = 2 then
                          begin
                           SelectSQL.Add('CR.Pago =''N'' and');
                          end;
          SelectSQL.Add(' CR.Vencimento between :VarDataI and :VarDataF and
');
          SelectSQL.Add(' CR.Clienteno = :VarClienteNo');
          SelectSQL.Add(' order by CR.Vencimento, CR.PedidoNo, CR.ContaNo
');
           ParamByName('VarDataI').AsDate:=Data1.Date;
           ParamByName('VarDataF').AsDate:=Data2.Date;
           ParamByName('VarClienteNo').AsInteger  := Cliente_Atual;
           Prepare;
           Open;
           End;

Os Indices
/****                             Foreign Keys
****/
ALTER TABLE CTAREC ADD CONSTRAINT FK_CTAREC_CLI_NO FOREIGN KEY (CLIENTENO)
REFERENCES CLIENTES (CLIENTENO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CTAREC ADD CONSTRAINT FK_CTAREC_LJ_NO FOREIGN KEY (LOJANO)
REFERENCES EMPRESA (LOJANO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CTAREC ADD CONSTRAINT FK_CTAREC_REG_NO FOREIGN KEY (REGISTRONO)
REFERENCES REGISTROS (REGISTRONO);

/****                               Indices
****/
CREATE INDEX CTAREC_IDX_DATA ON CTAREC (DATA);
CREATE INDEX CTAREC_IDX_DELETADO ON CTAREC (DELETADO);
CREATE INDEX CTAREC_IDX_PAGO ON CTAREC (PAGO);
CREATE INDEX CTAREC_IDX_VENC ON CTAREC (VENCIMENTO);



Zottis

"Um homem só tem o direito de olhar
  a um outro de cima para baixo, quando
  vai ajuda-lo a levantar-se".
                   Gabriel Garcia Marquez
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista