Pular para o conteúdo
  • Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 18 anos, 6 meses atrás por Marcio68Almeida.
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #75896
    Tytto
    Participante

      Como o Oracle gerencia os índices internamente.
      Se eu chamar um SELECT…ORDER BY, o Oracle verifica os indices e usa o mais adequadamente sozinho?

      Tenho uma aplicação em Delphi, que usa banco SQL e Oracle.
      No SQL, e em torno de 6 vezes mais rápido que o Oracle.

      O que e como posso verificar/fazer algo pra melhorar a performance?

      Uso Delphi 2006, Oracle 92, e acesso a dados pelo ADO.

      Obrigado.

      #75899
      Marcio68Almeida
      Participante

        O Oracle processa a sua solicitação em 3 passos :
        1. Parse – onde ele verificará as suas permissões e o caminho a ser traçado na execução do processo.
        2. Execute – é a execução propriamente dita do processo em questão
        3. Fetch – onde ele vai te devolver o resultado do processamento.

        Durante o parse ele vai procurar o melhor caminho, isso quer dizer que ele vai procurar o índice que melhor satisfaça a sua consulta.
        Se você colocar opções como SUBSTR, TO_CHAR, TO_DATE ou qualquer outra função nas colunas que fazem parte do índice, você elimina a possibilidade de utilizar o mesmo…

        Se a mesma consulta (exatamente a mesma, inclusive na mesma máquina e mesmo usuário) demora pouco no SQLPlus e muito no Delphi, é mais provável que o gargalo esteja no fetch, pois creio que o delphi vai receber toda a informação para formata-la e depois mostrar na tela…

        Há formas de “forçar” o Oracle a usar um determinado índice, mas até hoje não percebi nenhum ganho REAL, costumo conseguir maiores ganhos com a reformulação da consulta.

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