quantidades de registros na tabela

Discussão em 'Banco de Dados / Database' iniciado por marcioricardo, Setembro 27, 2011.

  1. marcioricardo

    marcioricardo Membro Participativo

    Bom dia!

    Em outros SGBDs tem a função COUNT() que utilizo para saber a quantidade de registros numa tabela. No Progress eu tenho alguma função que me traga a mesma informação que o COUNT() traz?

    Grato.
  2. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    SELECT COUNT(*) FROM <TABELA>.


    se quiser jogar esse valor num campo.


    DEF VAR i-cont AS INT.
    SELECT COUNT(*) INTO i-cont FROM <TABELA>.
    MESSAGE i-cont VIEW-AS ALERT-BOX.
  3. marcioricardo

    marcioricardo Membro Participativo

    Opa Rogério, valeu pelo retorno. Tinha achado esse código antes,


    Código:
    DEFINE VARIABLE iCount AS INTEGER.
    
    SELECT COUNT(*) INTO iCount 
    FROM mgesp.es-ext-ped-venda.
     
    DISP iCount.
    nada como uma pesquisa na net.

    Obrigado.
  4. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Segue algumas dicas:

    01) Nem sempre o SELECT COUNT será a maneira mais rápida de buscas todos os registros de uma tabela, se você usar um FOR EACH com FIELDS e USE-INDEX está leitura poderá ser mais rápida.

    02) Abaixo uma lógica onde busco todos os registros da tabela sem o WHERE e veja o tempo que usou usando o Select, Chave Unica e Não Primaria, Chave Única e Primaria, Chave Secundária e Sem Chave:





    03) Abaixo a mesma lógica acima, porém estou usando um WHERE e veja o tempo que usou usando o Select, Chave Unica e Não Primaria, Chave Única e Primaria, Chave Secundária e Sem Chave:





    Assim, vale o bom senso do teste, dependendo da sua situação, faça um teste com as opções e veja qual será mais rápido.

    Arquivos Anexados:

  5. kirchner

    kirchner Membro Participativo Moderador

    Eduardo,

    Aparentemente o ganho não está em usar índice X ou Y, porque o Progress sempre precisará ler o índice + tabela de qualquer forma.
    Acredito que os ganhos sejam por conta do uso de FIELDS (que deveria ser obrigatório ou erro compilação).

    Na teoria a forma mais rápida de fazer isto é pedir somente a menor coluna e usar um índice que garanta a leitura mais sequencial possível dos dados.
    No entanto o programador não tem como saber disso de ante-mão, logo essa abordagem não é viável.

Compartilhe esta Página