Fórum select muito lento #37438
17/07/2003
0
estou com problemas:
uso o ib 6.0 e delphi 6 e ibexpert
tenho uma tabela de:
orcamento com (1.500 registro)
cliente (500 registro)
convenio (200 registro)
paciente (10.000 registrto)
todas possuem chave primaria e integridade referencial (restrict)
quando dou um select ex:
select numorc,datorc,c.nomcli,n.nomcon,p.nompac
from orcamento o inner join cliente c
on (o.codfil||o.codcli=c.codfil||c.codcli) inner join convenio n
on (o.codfil||o.codcon=n.codfil||n.codcon) inner join paciente p
on (o.codfil||o.codpac=p.codfil||p.codpac)
where codfil=1 and codcli=1
order by codfil,codcli
demora muito mesmo (é mais lento do que o paradox)
o que eu faço ?
e se eu unir com itens orcamento fica pior ainda
uso o ib 6.0 e delphi 6 e ibexpert
tenho uma tabela de:
orcamento com (1.500 registro)
cliente (500 registro)
convenio (200 registro)
paciente (10.000 registrto)
todas possuem chave primaria e integridade referencial (restrict)
quando dou um select ex:
select numorc,datorc,c.nomcli,n.nomcon,p.nompac
from orcamento o inner join cliente c
on (o.codfil||o.codcli=c.codfil||c.codcli) inner join convenio n
on (o.codfil||o.codcon=n.codfil||n.codcon) inner join paciente p
on (o.codfil||o.codpac=p.codfil||p.codpac)
where codfil=1 and codcli=1
order by codfil,codcli
demora muito mesmo (é mais lento do que o paradox)
o que eu faço ?
e se eu unir com itens orcamento fica pior ainda
Helder Andr
Curtir tópico
+ 0
Responder
Posts
17/07/2003
Afarias
|select numorc,datorc,c.nomcli,n.nomcon,p.nompac
|from orcamento o inner join cliente c
|on (o.codfil||o.codcli=c.codfil||c.codcli) inner join convenio n
|on (o.codfil||o.codcon=n.codfil||n.codcon) inner join paciente p
|on (o.codfil||o.codpac=p.codfil||p.codpac)
de cara, o problema é q vc está concatenando os campos que faram as buscas, sendo assim o IB não vai utilizar seus índices. No mais, não dá pra dizer muito sem ter um exemplo do banco, ou ao menos o metadata ou o PLAN retornado pelo IB.
Utilize o software IBPlanAnalizer para otimizar seus SQLs.
Abraço
|from orcamento o inner join cliente c
|on (o.codfil||o.codcli=c.codfil||c.codcli) inner join convenio n
|on (o.codfil||o.codcon=n.codfil||n.codcon) inner join paciente p
|on (o.codfil||o.codpac=p.codfil||p.codpac)
de cara, o problema é q vc está concatenando os campos que faram as buscas, sendo assim o IB não vai utilizar seus índices. No mais, não dá pra dizer muito sem ter um exemplo do banco, ou ao menos o metadata ou o PLAN retornado pelo IB.
Utilize o software IBPlanAnalizer para otimizar seus SQLs.
Abraço
Responder
Gostei + 0
03/08/2003
Imstaff
O que você quer fazer exatamente? As vezes tem uma maneira melhor de bolar o sql.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)