[firebase-br] Fwd: Select com NOT IN
Reinaldo Cesar
diasmartins em gmail.com
Qui Jul 23 09:29:31 -03 2009
Vocês sabem se no IN também pode dar problemas de performance? ou
somente no NOT IN.
Li algo que a partir do Firebird 2.0, o otimizador não utiliza indices
quando a instrução tem IN ou NOT IN na instrução SQL.
Se for esse o Caso a troca por "OR" nos casos de campos como IN ('AB',
'BX', 'CA') e troca por exists no caso como citado abaixo é o recomendado?
Att
Reinaldo
Magnun Oliveira escreveu:
> apos alguns testes venho aqui mostrar o resultado. fiz as pesquisas com o
> parametro cidade = 330
>
> o primeiro SQL foi com NOT IN
>
> select c.id_cidade, c.cidade
> from cidades c
> where c.id_cidade not in (
> select id_cidade_destino from entregas where id_cidade_origem = :cidade
> )
>
> resultado
>
> tempo = 42 minutos e 41 segundos
> starting memory = 12.550.188
> current memory = 13.995.740
> delta memory = 1.445.552
> number of buffers = 2048
> reads = 41.369.325
> writes = 702.440
> rows affected = 1431
>
> o segundo SQL foi com NOT EXISTS
>
> SELECT id_cidade, cidade
> FROM cidades c
> WHERE NOT EXISTS (SELECT first 1 NULL
> FROM entregas e
> WHERE e.id_cidade_destino = c.id_cidade and e.id_cidade_origem = :cidade)
>
>
> tempo = 13 segundos
> starting memory = 12.265.992
> current memory = 12.307.484
> delta memory = 41.492
> number of buffers = 2048
> reads = 16.696.820
> writes = 548.021
> rows affected = 1431
>
>
> obrigado a todos que ajudaram e ficam esses resultados para caso alguem
> precise de uma coisa parecida, serve como comparacao.
>
>
> ps: voltei o nome do campo id_cidade para id_cidade_destino na tabela
> entregas, pois havia alterado para testes
> ______________________________________________
> 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