Deletar registro com mais velocidade em uma tabela Progress

Discussão em 'Progress 4GL' iniciado por andreluisbrandao, Abril 9, 2015.

  1. andreluisbrandao

    andreluisbrandao Membro Participativo

    Bom dia a todos,

    Tenho uma tabela criada com mais de 40mil registros e quero apagar alguns. So que o processo é muito lento.

    uso o seguinte comando para exemplificar, sabendo que tenho muitos usuarios acessando varias tabelas do banco inclusive essa.

    for each tabela use-index indice
    where data >= '01/01/2014'
    and data <= '31/01/2014':

    delete tabela.
    end.

    existe alguma coisa pra melhorar a performance deste processo ?
  2. keytech

    keytech Sem Pontuação

    seu índice deve ser por data certo?
    O que melhora um pouco seria:
    Código:
    DEF VAR da-data AS DATE NO-UNDO.
    
    
    DO  da-data = 01/01/2015 TO 01/10/2015:
    
        FOR EACH tabela
           WHERE tabela.data = da-data:
    
            DELETE tabela.
    
        END. /* FOR EACH tabela */
    
    END. /* DO  da-data */
  3. andreluisbrandao

    andreluisbrandao Membro Participativo

    Basta colocar o 'DO' com a faixa de data, apenas isso ? é necessario exclusive-lock ou outro comando ?
  4. keytech

    keytech Sem Pontuação

    Exclusive-lock é recomendado usar para esse tipo de transação.
  5. keytech

    keytech Sem Pontuação

    E sim, colocar a faixa de data.
  6. andreluisbrandao

    andreluisbrandao Membro Participativo

    Fiz aqui do jeito que voce falou e continua a mesma lentidão....

Compartilhe esta Página