[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