[firebase-br] Otimização do Select

Felix felix.sol em terra.com.br
Sex Maio 6 12:30:31 -03 2011


Descobri que preciso de ajuda, alguém tem material sobre otimização de
selects?

Uma query minha que demorava +2 minutos baixou para 4 segundos simplemente
mudando o seguinte (posição do LEFT / INNER JOIN):

ANTES (+2 minutos para executar)
-----
Select (...) from Pedido 
 LEFT  JOIN PAGTOS   on pedido.pedido=ABS( pagtos.pedido )
 INNER JOIN CADASTRO on pedido.CB=CADASTRO.CB 
where 
 cadastro.promocb = 959 and
 Pedido.Data  >= '04/01/2011' and 
 Pedido.Data  <= '04/30/2011' 

DEPOIS (4 segundos para executar)
------
Select (...) from Pedido 
 INNER JOIN CADASTRO on pedido.CB=CADASTRO.CB 
 LEFT  JOIN PAGTOS   on pedido.pedido=ABS( pagtos.pedido )
where 
 cadastro.promocb = 959 and
 Pedido.Data  >= '04/01/2011' and 
 Pedido.Data  <= '04/30/2011' 

Fco. Felix
Desenvolvimento de Sistemas
www.soltecnologia.com.br


-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Felix
Enviada em: sexta-feira, 6 de maio de 2011 12:13
Para: 'FireBase'
Assunto: [firebase-br] RES: Select em segundo plano?

Em cima disso, é possível 'matar' um select enquanto está sendo realizado?
Tipo, se o usuário desistir do relatório ?

Fco. Felix
Desenvolvimento de Sistemas
www.soltecnologia.com.br


-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Eduardo Jedliczka
Enviada em: sexta-feira, 6 de maio de 2011 11:57
Para: FireBase
Assunto: Re: [firebase-br] Select em segundo plano?

todas as versões anteriores ao Firebird 2.5 não não thread-safe, ou
seja, se houver mais do que uma thread realizando leituras no banco,
isto pode gerar problemas.

Mas acho que talvez seria melhor criar uma thread apenas para
"responder" ao usuário, p.e. (se for delphi, colocar um
Application.ProcessMessages a cada 1 segundo).

abraço,

==========================
Eduardo Jedliczka
Apucarana - Pr
==========================




Em 6 de maio de 2011 11:34, Felix <felix.sol em terra.com.br> escreveu:
> Senhores,
>
> Eventualmente alguma pesquisa pode ser mais demorada (digamos, 2 minutos)
e
> o usuário fica impaciente, achando que a máquina 'travou', apesar do
sistema
> informar que está processando (label estático).
>
> Pergunta: é viável colocar o select em segundo plano, como uma Thread ?
>
> Obrigado,
>
> Fco. Felix
> Desenvolvimento de Sistemas
> www.soltecnologia.com.br
>
>
> ______________________________________________
> 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
>

______________________________________________
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


______________________________________________
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





Mais detalhes sobre a lista de discussão lista