O NOT IN ainda está sendo o mais eficiente
Em 5 de julho de 2013 16:07, Bruno Silva escreveu:
>
> 2013/7/5 Claudio Bezerra Leopoldino
>
>> EXPLAIN SELECT A.CAMPOS FROM TABEL_A A
>>
>> WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B))
>>
>
> Trocaria o NOT IN port NOT EXISTS
>
> Bruno E.
2013/7/5 Claudio Bezerra Leopoldino
> EXPLAIN SELECT A.CAMPOS FROM TABEL_A A
>
> WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B))
>
Trocaria o NOT IN port NOT EXISTS
Bruno E. A. Silva.
Analista de Sistemas.
Bacharel em Sistemas de Informação
Pós-graduando em Gerência de Projetos
Certified
Marcelo, a diferença de custos entre as duas opções não é tão significativa.
Os planos de execução mostram que você está fazendo sequential scans. Neste
caso, aconselho que tente indexar as colunas utilizadas nas junções e teste se
há melhoria na sua consulta e depois disso peço que repita o t
2013/7/5 Marcelo da Silva
> Tempo os seguintes resultados:
>
> OPCAO A
>
> explain select a.* from mv_servicos_balcao a
> left join mv_servicos_print b on(cod_key_balcao = a.cod_key)
> where (b.cod_key is null)
> and(a.obs not in('C'));
>
> "Hash Right Join (cost=9510.11..17269.55 rows=1 width
Em 05-07-2013 14:54, Marcelo da Silva escreveu:
Tempo os seguintes resultados:
OPCAO A
explain select a.* from mv_servicos_balcao a
left join mv_servicos_print b on(cod_key_balcao = a.cod_key)
where (b.cod_key is null)
and(a.obs not in('C'));
"Hash Right Join (cost=9510.11..17269.55 rows=
Tempo os seguintes resultados:
OPCAO A
explain select a.* from mv_servicos_balcao a
left join mv_servicos_print b on(cod_key_balcao = a.cod_key)
where (b.cod_key is null)
and(a.obs not in('C'));
"Hash Right Join (cost=9510.11..17269.55 rows=1 width=136)"
" Hash Cond: (b.cod_key_balcao = a.co
Não depende apenas da consulta. Depende dos dados armazenados e estatísticas no
seu servidor.
Peço que use explain e noso envie o reultado:
EXPLAIN SELECT A.CAMPOS FROM TABELA_A A
LEFT JOIN TABELA_B B ON(B.CODIGO = A.CODIGO)
WHERE (B.CAMPO IS NULL)
e
EXPLAIN SELECT A.CAMPOS FROM TABEL_A A
W
Em 05-07-2013 14:25, Marcelo da Silva escreveu:
Qual seria o mais eficiente ?
SELECT A.CAMPOS FROM TABELA_A A
LEFT JOIN TABELA_B B ON(B.CODIGO = A.CODIGO)
WHERE (B.CAMPO IS NULL)
ou
SELECT A.CAMPOS FROM TABEL_A A
WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B))
Depende do tamanho das tab
Qual seria o mais eficiente ?
SELECT A.CAMPOS FROM TABELA_A A
LEFT JOIN TABELA_B B ON(B.CODIGO = A.CODIGO)
WHERE (B.CAMPO IS NULL)
ou
SELECT A.CAMPOS FROM TABEL_A A
WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B))
--
Marcelo Silva
--
Em 05-07-2013 08:10, Eurides Baptistella escreveu:
Desculpe pessoal mas não estou mais recebendo os e-mails da lista, o
último que recebi foi no dia 08/06/2013, vou tentar consertar isso...
Quanto as informações, obrigado pelas respostas, apenas uma dúvida:
Considerando utilizar o pg_basebackup
Desculpe pessoal mas não estou mais recebendo os e-mails da lista, o último
que recebi foi no dia 08/06/2013, vou tentar consertar isso...
Quanto as informações, obrigado pelas respostas, apenas uma dúvida:
Considerando utilizar o pg_basebackup no servidor Slave, eu não consigo
realizar backups in
11 matches
Mail list logo