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

      Pessoal, boa noite.

      Tenho o seguinte problema. Estou com uma procedure que precisa realizar a exclusão em uma tabela que possui 1 milhão de linhas, sendo que desse montante eu devo excluir aproximadamente 45 mil linhas. O problema ocorre quando o processo tenta realizar a exclusão, deixando tudo muito lento. A exclusão é realizada utilizando-se índices, mas mesmo assim o processo de exclusão fica muito lento. Alguém já passou por esta situação ? Alguém tem alguma dica de como eu devo proceder ?

      Estou utilizando o Oracle 9i.

      Grato,

      Selli

      #76385
      Marcio68Almeida
      Participante

        Bom, se o processo está muito lento, há varias coisas a serem levadas em consideração…
        1. Se essa tabela possui muito índices, cada linha excluída, tem que atualizar todos os índices, isso atrapalha a performance, você pode remover os índices que não estão sendo utilizados no processo e recria-los posteriormente…
        2. Você tem certeza que o índice está realmente sendo utilizado ??? Pode ser que, na sua consulta há algum ítem que invalide a utilização do mesmo, verifique primeiro com um select, para ver o tempo de resposta e, se possível, verifique o plano d execução.
        3. Pode ser que sua tabela esteja MUITO fragmentada, isso também é um problema na performance…
        4. De quanto em quanto você está dando commit no processo, se for de um em um, ai a casa cai… faça de cinco em cinco mil…

        #76387
        mvselli
        Participante

          Marcio,

          A tabela possui somente um indice composto por dois campos ele é o único índice na tabela e sobre a questão do plano de execução a consulta está utilizando o indice corretamente. Quanto a questão do commit vou tentar elevar o número orange, pois eu esou dando commit de 1000 em 1000 registros.

          Valeu pela força.

          #76389
          Marcio68Almeida
          Participante

            Uma outra alternativa é você criar uma tabela em outro esquema com as linhas que devem ficar, zerar a tabela e retornar as linhas, isso pode acabar sendo mais rápido, mas não menos indolor, já que tem que ver foreign key, constraints, permissões, etc…

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