[firebase-br] Interbase rápido x Firebird muito lento. Me ajudem com esse problema por favor.
Rodolpho da Silva
nascimento em gko.com.br
Qui Maio 14 12:35:02 -03 2009
Magno,
O subselect não é executado em cada linha da tabela principal. Ambas as consultas são executadas momentâneamente e alocadas em memória. A "engine" do FB é que se encarrega de comparar as linhas existentes ou não entre ambas as consultas já em cache para produzir o resultado. Uma das facilidades do EXISTS é que ele apenas faz um teste lógico (V ou F) entre os resultados e não produz resultado do subselect. Como assim? Eu não posso utilizar colunas do subselect em meu select principal usando EXISTS.
Espero ter ajudado.
Abraço!
Rodolpho
----- Original Message -----
From: Magno System
To: FireBase
Sent: Thursday, May 14, 2009 12:19 PM
Subject: Re: [firebase-br]Interbase rápido x Firebird muito lento. Me ajudem com esse problema por favor.
Oi Douglas, agora você me fez ficar com dúvida. Se o EXISTS executa 1 select
para cada registro da tabela principal, no teste do email anterior, seriam
28052 SELECT'S do EXISTS contra 1 do IN. Então como se explica o EXISTS ser
mais rápido ??? Não é ao contrário não ???
----- Original Message -----
From: "Douglas Tosi" <douglasht em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Thursday, May 14, 2009 11:26 AM
Subject: Re: [firebase-br]Interbase rápido x Firebird muito lento. Me ajudem
com esse problema por favor.
2009/5/14 Magno System <magno em speet.com.br>:
> Na minha opinião, a regra é simples:
> [NOT] IN (Valor1, Valor2, ... , ValorN)
> [NOT] EXISTS (SELECT CAMPO FROM TABELA)
A exceção é quando o select interno é complexo e lento.
O IN executa este select interno uma vez só e faz comparação natural.
Já com exists o select interno tende a ser executado uma vez para cada
registro de select pai.
Ou seja, se o select interno for lento, mas retornar poucos registros,
vale mais usar o IN.
Isto tudo é claro só serve para se ter uma ideia de como iniciar. Vale
testar os dois casos e medir a diferença.
hth,
--
Douglas Tosi
www.sinatica.com
Mais detalhes sobre a lista de discussão lista