Fórum CONSULTA LENTA #60986
04/02/2010
0
select d.DTEMISSAO,
case UPPER(d.operacao)
when ´PAGAR´ THEN COALESCE(F.nomefantasia,D.HISTORICO)
WHEN ´RECEBER´ THEN COALESCE(C.NOMEFANTASIA,D.HISTORICO)
ELSE D.HISTORICO END AS HISTORICO,
OPERACAO, tp.TIPOPAGTO, VALOR from DUPLICATA d
FULL join tipopagto tp on tp.codigo=d.tipopagto
FULL join pedido ped on ped.codigo=d.npedido
FULL join cliente c on c.codigo=ped.cliente
FULL join fornecedor f on f.codigo=ped.cliente
order by dtemissao
o objetivo émontar um extrato a partir da tabela duplicata, mas pra isso preciso chamar varias tabelas pelas chave estrangeiras.
porem essa consulta esta muuuito lenta, mesmo eu filtrando por data , colocando um dia que noa tem movimentacao ainda ta muito lenta, me falaram pra usar indices mas nao sei usar , principalmente considerando varias tabelas juntas, alguem pode me ajudar???
Rpdesign
Curtir tópico
+ 0Posts
04/02/2010
Rpdesign
------ Performance info ------
Prepare time = 0ms
[b:7a5743852c]Execute time = 28s 484ms[/b:7a5743852c]
Avg fetch time = 2.589,45 ms
Current memory = 1.077.656
Max memory = 1.275.512
Memory buffers = 2.048
Reads from disk to cache = 0
Writes from cache to disk = 0
Gostei + 0
21/08/2010
Carlos Mazzi
Gostei + 0
21/08/2010
Emerson Nascimento
select
d.DTEMISSAO,
coalesce(C.NomeFantasia, F.NomeFantasia, D.Historico) AS HISTORICO,
d.OPERACAO, tp.TIPOPAGTO, d.VALOR
from
duplicata d
left join
tipopagto tp on tp.codigo=d.tipopagto
left join
pedido ped on ped.codigo=d.npedido
left join
cliente c on upper(d.operacao)='RECEBER' and c.codigo=ped.cliente
left join
fornecedor f on upper(d.operacao)='PAGAR' and f.codigo=ped.cliente
order by
d.dtemissao
crie índices para todos os campos utilizados em relacionamentos, wheres e order by.
no caso:
tabela pedido : indice pelo campo codigo.
tabela cliente : indice pelo campo codigo.
tabela fornecedor : indice pelo campo codigo.
tabela tipopagto : indice pelo campo codigo.
tabela duplicata : indice pelo campo dtemissao.
Gostei + 0
22/08/2010
Rodolfo Patané
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)