Escolha de indices pelo progress

Discussão em 'Progress 4GL' iniciado por ecsousa, Abril 22, 2013.

  1. ecsousa

    ecsousa Membro Participativo

    Alguém saberia explicar como o progress escolhe o índice a ser utilizado em uma determinada query?

    Soube que a progress tinha um documento que detalhava em uma fórmula como o progress fazia a escolha de índices de forma que era possivel, através dela, saber exatamente que índice seria utilizado na query.

    Obrigada,
  2. jalegria

    jalegria Membro Participativo

    Saudações

    Tenta compilar o programa da query com as opções "listing" e/ou "xref".
    Pelo que me lembro uma delas ou as duas mostra o indice utilizado em um acesso a uma tabela.

    Não tenho certeza pq faz tempo que mexi com isso para fazer um programa de referencia cruzada, mas nao custa tentar.

    compile programa.p listing list.txt xref xref.txt.
  3. ecsousa

    ecsousa Membro Participativo

    Oi Jefferson,

    Obrigada pelas dicas.

    Eu compilei utilizando as duas sugestões, em nenhuma delas ele identificou o índice ( o nome )...mas ele mostra quais os campos acessados pela query =) que já ajuda um pouco...

    mas o que precisava era saber como o progress "decide" entre um índice e outro...
    Exemplo:
    tabela tab1
    campos: a, b, c, d, e
    indices-> idx1:a, b ; idx2: b, a ; idx3: a, c

    ai faço: for each tab1 where tab1.a = "xxx" no-lock. Imagino que o progress vá utilizar nesse caso o indice idx1 OU o idx3.... certo? e como saber qual deles foi o escolhido? e o pq dessa escolha...

    Obrigada,
  4. jalegria

    jalegria Membro Participativo

    No arquivo gerado pela opção XREF diz o indice utilizado, procure pela palavra "SEARCH".

    Agora, como o Progress fez a seleção, não é mostrado em lugar algum que eu saiba.

    É algo interno da engine do banco de dados, eu até fiz um curso na PSG (a bastante tempo) de otimização de programa, e um dos topicos era como melhorar as consultas utilizando corretamente os campos de indices.
  5. felix

    felix Membro Participativo

    Ola.

    Até onde eu sei, o progress irá procurar dentro dos indices o que mais se aproxima da seleção feita. vale lembrar que campos invertidos diminuem a performance.
  6. ecsousa

    ecsousa Membro Participativo

    Obrigada =)

Compartilhe esta Página