Pular para o conteúdo
  • Este tópico contém 2 respostas, 2 vozes e foi atualizado pela última vez 12 anos, 4 meses atrás por Avatar de Fábio PradoFábio Prado.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #104180
    Avatar de rsanchesrsanches
    Participante

      Boa tarde,

      A utilização do NLV na clausula Where pode gerar CONCATENATION no plano de execução acessando a mesma tabela duas vezes?

      EX: Select * from clientes where id_cliente = nlv(null,id_cliente)

      Obrigado,

      Rogério Sanches

      #104181
      Avatar de Fábio PradoFábio Prado
      Participante

        Rogério NVL acessa a tabela 2 vezes. Vc pode ver isso através do plano de execução.

        explain plan for
        Select * from hr.employees where employee_id = nvl(null,employee_id);

        select * from table(dbms_xplan.display);

        plan FOR bem-sucedido.

        PLAN_TABLE_OUTPUT

        Plan hash value: 1445457117


        | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

        | 0 | SELECT STATEMENT | | 109 | 7739 | 3 (0)| 00:00:01 |

        | 1 | TABLE ACCESS FULL| EMPLOYEES | 109 | 7739 | 3 (0)| 00:00:01 |

        8 linhas selecionadas

        Para ver mais informações sobre o schema HR:
        http://www.fabioprado.net/2010/12/insta … lo-hr.html

        Para ver mais informações sobre como gerar e analisar um plano de execução:
        http://www.fabioprado.net/2011/03/anali … -para.html

        []s

        Fábio Prado
        http://www.fabioprado.net

        #104185
        Avatar de Fábio PradoFábio Prado
        Participante

          ops, comentário anterior errado…

          o correto é “NVL NÃO acessa a tabela 2 vezes. Vc pode ver isso através do plano de execução.”

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.
        plugins premium WordPress