2014-08-12 11:05 GMT-03:00 Pedro B. Alves <[email protected]>:

>
>>>
>> Dependendo da versão do PostgreSQL, se você fizer um EXPLAIN ANALYZE de
>> cada uma delas, provavelmente o plano será exatamente o mesmo.
>>
>
> Utilizo a versão 9.3.x
>
> executei o EXPLAIN..
>
> SELECT twe.*
>      , (SELECT descricao FROM tespecializacoes WHERE idespecializacao =
> twe.idespecializacao) AS especializacao
>   FROM tworkflowetapas twe
>
>
> "Seq Scan on tworkflowetapas twe  (cost=0.00..16.36 rows=14 width=30)
> (actual time=0.040..0.142 rows=14 loops=1)"
> "  SubPlan 1"
> "    ->  Seq Scan on tespecializacoes  (cost=0.00..1.09 rows=1 width=218)
> (actual time=0.003..0.004 rows=1 loops=14)"
> "          Filter: (idespecializacao = twe.idespecializacao)"
> "          Rows Removed by Filter: 7"
> "Total runtime: 0.220 ms"
>
>
>
>
> SELECT twe.*
>   FROM tworkflowetapas twe
>   LEFT JOIN tespecializacoes esp ON (twe.idespecializacao =
> esp.idespecializacao)
>
>
> "Seq Scan on tworkflowetapas twe  (cost=0.00..1.14 rows=14 width=30)
> (actual time=0.013..0.016 rows=14 loops=1)"
> "Total runtime: 0.068 ms"
>
>
O tempo da segunda consulta é menor, pois o banco está ignorando a junção.
Você tem que utilizar pelo menos algum campo da tabela para que os dois
planos de execução sejam realmente iguais, e retornem a mesma coisa.

[]'s
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a