[firebase-br] Select com performance ruim

Humberto S. Reis hsreisjr em gmail.com
Dom Jun 12 22:52:31 -03 2011


Grande dica,

select DISTINCT
..
..
..

 from ITEMMOVIMENTACAOPRODUTO I
 left outer join MOVIMENTACAO M on

      (M.CODIGO = I.COD_MOVIMENTACAO and M.TIPO = I.TIPOMOVIMENTACAO)

Funcionou muito bem,


Obrigado....

Em 11 de junho de 2011 23:19, Paulo Portella
<pportellaa.firebase em gmail.com>escreveu:

>
> minha sugestão :
>
> 1o.) no uso de DISTINCT no SELECT inicial
> 2o.) no uso de LEFT JOIN ou RIGTH JOIN na "posicao" certa das tabelas
> 3o.) mudar
>
> select
> ..
> ..
> ..
>
>
>  from MOVIMENTACAO M
>  join ITEMMOVIMENTACAOPRODUTO I on
>       (M.CODIGO = I.COD_MOVIMENTACAO and M.TIPO = I.TIPOMOVIMENTACAO)
>
> PARA :
>
> select DISTINCT
> ..
> ..
> ..
>
>  from ITEMMOVIMENTACAOPRODUTO I
>  left outer join MOVIMENTACAO M on
>
>       (M.CODIGO = I.COD_MOVIMENTACAO and M.TIPO = I.TIPOMOVIMENTACAO)
>
>
>
> Vida de americano é assim: iPhone, iPod, iPad, iMac….
> Já a de brasileiro é assim:IPTU, IPVA, ICMS, IPI etc
>
>
> Em 11/06/2011 19:48, Humberto S. Reis escreveu:
>
>  Pessoal, boa noite,
>>
>> Tenho o select abaixo que retorna somente 6 registro, mas varre a tabela
>> MOVIMENTACAO e lê mais de 66.000 registros, quando deveria ler os 6
>> registros correspondentes (ITEMMOVIMENTACAOPRODUTO e filha da tabela
>> MOVIMENTACAO). Como resolver isso, sem duplicar campos, já que o filtro é
>> pelo status da MOVIMENTACAO  e datamovimentacao, também da tabea
>> MOVIMENTACAO?
>>
>> select I.RDB$DB_KEY, I.COD_UNIDADE, I.VALORUNITARIO, I.QUANTIDADE,
>>        I.ALIQUOTAIPI, I.BASEICMSSUBSTITUIDO, I.ALIQUOTAICMS, I.CODIGO,
>>        I.COD_MOVIMENTACAO, I.TIPOMOVIMENTACAO, M.COD_REQUISITANTE,
>>        M.COD_CEDENTE, M.VALORIPI, M.DATAMOVIMENTACAO, I.VALORRATEIO,
>>        M.TOTAL_CONHECIMENTO, M.TIPOFRETE,M.VALORFRETEEXTRA, M.VALORDAE,
>>        M.COD_TIPOMOVIMENTACAO, M.COD_TIPODOCUMENTO, M.BDI,
>>        I.VALORICMSSUBSTITUIDO, M.TOTAL, I.VALORITEM,
>>        (I.VALORRATEIO_FRETE + I.VALORRATEIO_SEGURO + I.VALORRATEIO_OUTRO),
>>        I.BASEICMS, M.VALOR_DESC_FINANCEIRO
>>   from MOVIMENTACAO M
>>   join ITEMMOVIMENTACAOPRODUTO I on
>>        (M.CODIGO = I.COD_MOVIMENTACAO and M.TIPO = I.TIPOMOVIMENTACAO)
>>  where (M.STATUS = 'F') and
>>        (M.DATAMOVIMENTACAO between '01/01/1900' and current_date) and
>>        (((M.COD_CEDENTE = 'L000001') and (M.TIPO = 'S')) or
>>        ((M.COD_REQUISITANTE = 'L000001') and (M.TIPO = 'E'))) and
>>        (I.COD_PRODUTO = '00000402')
>>  order by I.COD_PRODUTO,M.DATAMOVIMENTACAO, M.CODIGO, M.TIPO, I.CODIGO
>>
>> Ps. Não uso FK, faço o controle de integridade via trigger´s.
>>
>>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 
Humberto S. Reis



Mais detalhes sobre a lista de discussão lista