Fórum Opiniao sobre o tempo de execuçao de uma SP #297121
26/09/2005
0
Galera, gostaria de saber a opinião de vcs sobre essa rotina que irei mostrar, mais abaixo.
Para retornar 2500 registros a SP esta levando um tempo de 3min e 30 seg. Levando em consideração que estou trafegando esses dados via rede com 10 usuarios logados no banco firebird 1.0 nao sei se esse tempo é aceitável, ainda acho que a execução da SP está lenta, ou é isso mesmo pessoal, sera que estou querendo de mais ???
A SP é essa:
for select count(p.codpedido),
max(p.datapedido),
sum(p.vlrsubtotal),
f.codfornec,
f.razaofornec,
c.codcli,
c.razaocli,
c.codclicid_cli,
c.cnpjcli,
cid.codcidade,
cid.nomecidade,
(select sum(p.vlrsubtotal) from pedido p
where p.datapedido between :pe_dt1 and :pe_dt2
and
(p.statusped = :pe_st1
or
p.statusped = :pe_st2
or
p.statusped = :pe_st3
or
p.statusped = :pe_st4
or
p.statusped = :pe_st5)
and
p.codfornec_ped = f.codfornec)
from pedido p, cadfornecedor f, cadcliente c, cadcidade cid
where
f.codfornec = p.codfornec_ped
and
c.codcli = p.codcliente_ped
and
cid.codcidade = c.codclicid_cli
and
p.datapedido between :pe_dt1 and :pe_dt2
and
(p.statusped = :pe_st1
or
p.statusped = :pe_st2
or
p.statusped = :pe_st3
or
p.statusped = :pe_st4
or
p.statusped = :pe_st5)
group by
f.codfornec, f.razaofornec,
c.codcli, c.razaocli, c.codclicid_cli, c.cnpjcli,
cid.codcidade, cid.nomecidade
order by f.codfornec, 3 desc
into :PS_QUANTPED,
:PS_DTULTPED,
:PS_VLRTOTALPED,
:PS_CODFOR,
:PS_RAZAOFOR,
:PS_CODCLI,
:PS_RAZAOCLI,
:PS_CODCLICID,
:PS_CNPJCLI,
:PS_CODCIDADE,
:PS_NOMECIDADE,
:total
OBS: Se eu tirar o select que efetua a soma por fornecedor e que retorna :Total, eu tenho uma consulta muito rápida, mas eu preciso desse :total pra poder fazer uns calculos de ¬.
Abracos
Para retornar 2500 registros a SP esta levando um tempo de 3min e 30 seg. Levando em consideração que estou trafegando esses dados via rede com 10 usuarios logados no banco firebird 1.0 nao sei se esse tempo é aceitável, ainda acho que a execução da SP está lenta, ou é isso mesmo pessoal, sera que estou querendo de mais ???
A SP é essa:
for select count(p.codpedido),
max(p.datapedido),
sum(p.vlrsubtotal),
f.codfornec,
f.razaofornec,
c.codcli,
c.razaocli,
c.codclicid_cli,
c.cnpjcli,
cid.codcidade,
cid.nomecidade,
(select sum(p.vlrsubtotal) from pedido p
where p.datapedido between :pe_dt1 and :pe_dt2
and
(p.statusped = :pe_st1
or
p.statusped = :pe_st2
or
p.statusped = :pe_st3
or
p.statusped = :pe_st4
or
p.statusped = :pe_st5)
and
p.codfornec_ped = f.codfornec)
from pedido p, cadfornecedor f, cadcliente c, cadcidade cid
where
f.codfornec = p.codfornec_ped
and
c.codcli = p.codcliente_ped
and
cid.codcidade = c.codclicid_cli
and
p.datapedido between :pe_dt1 and :pe_dt2
and
(p.statusped = :pe_st1
or
p.statusped = :pe_st2
or
p.statusped = :pe_st3
or
p.statusped = :pe_st4
or
p.statusped = :pe_st5)
group by
f.codfornec, f.razaofornec,
c.codcli, c.razaocli, c.codclicid_cli, c.cnpjcli,
cid.codcidade, cid.nomecidade
order by f.codfornec, 3 desc
into :PS_QUANTPED,
:PS_DTULTPED,
:PS_VLRTOTALPED,
:PS_CODFOR,
:PS_RAZAOFOR,
:PS_CODCLI,
:PS_RAZAOCLI,
:PS_CODCLICID,
:PS_CNPJCLI,
:PS_CODCIDADE,
:PS_NOMECIDADE,
:total
OBS: Se eu tirar o select que efetua a soma por fornecedor e que retorna :Total, eu tenho uma consulta muito rápida, mas eu preciso desse :total pra poder fazer uns calculos de ¬.
Abracos
Diegodelphi
Curtir tópico
+ 0
Responder
Posts
27/09/2005
Emerson Nascimento
o tempo está demasiadamente alto.
há índices na sua tabela?
na tabela de pedidos deveria haver um índice com a chave:
[i:83e383547b]datapedido[/i:83e383547b], [i:83e383547b]statusped[/i:83e383547b] e [i:83e383547b]codfornec_ped[/i:83e383547b]
há índices na sua tabela?
na tabela de pedidos deveria haver um índice com a chave:
[i:83e383547b]datapedido[/i:83e383547b], [i:83e383547b]statusped[/i:83e383547b] e [i:83e383547b]codfornec_ped[/i:83e383547b]
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)