[firebase-br] Pesquisa Muito lenta

Zottis zottissistemas em brturbo.com.br
Ter Jan 22 15:47:11 -03 2008


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


Mais detalhes sobre a lista de discussão lista