1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

PHP/MYSQL - Best Row Count Performance

Discussão em 'Web Development' iniciada por RuiSousa881, 13 de Novembro de 2012. (Respostas: 6; Visualizações: 1040)

  1. RuiSousa881

    RuiSousa881 Suspenso

    Boas pessoal. Tenho uma pequena dúvida.

    Qual destes 3 métodos é o melhor para obter o número de linhas de uma tabela em mysql:

    Código:
    SELECT count(*) FROM table
    Código:
    SELECT count(id) FROM table
    Código:
    $res = SELECT id FROM table
    $rows = mysql_num_rows($res);

    Pelo que li aí nas "internets" a melhor opção é a primeira, pois está optimizada para este tipo de operações. Eu estupidamente tenho usado sempre a última que dizem ser a pior.

    Alguém pode confirmar a veracidade disto?

    Obrigado desde já.
     
  2. flaviorodrigues

    flaviorodrigues Power Member

    a ultima parece me bem pior, eu uso a 2 honestamente em MSSQL
     
  3. ftav

    ftav Power Member

    Na minha opinião, depende do tamanho da base de dados. É preferível usar o COUNT mas em casos onde a base de dados não é lá muito grande, acaba por ter o mesmo resultado. Além disso, usando o COUNT é uma instrução e não duas ;-) Já agora, há situações onde pode haver erro com a primeira linha da tabela ao usar o mysql_num_rows. E também não é necessário o * para o COUNT, basta COUNT().
     
  4. hostmake

    hostmake Power Member

    Se quiseres apenas mostrar o número de registos, a 1º ou 2º opção são as mais rápidas.
    Não é que o SQL esteja mais otimizado para essas operações, simplesmente no 3º caso, estás a ir buscar os campos todos, e nos outros dois query's que tens ai, apenas obténs um registo de volta que te diz o total de registos na tabela.
     
  5. RuiSousa881

    RuiSousa881 Suspenso

    Curiosamente nos testes por mim realizados a diferença entre as 3 operações não é substancial. Isto feito com uma tabela com milhares de registos.

    Obrigado pelas vossas opiniões.
     
  6. Na minha opinião, a nível de processamento, se usares a primeira opção, vais ter que ir buscar todos os dados à base de dados e fazer a respectiva contagem.
    Em relação à terceira, tens que fazer um SELECT a tudo, e depois fazer o PHP ler todos os registros e fazer um return da sua contagem.

    A segunda parece mais viável, dado que só verifica quantos rows tem aquela tabela, somente co campo pedido, parecendo ser mais leve a nível de processamento.

    Cumprimentos.
     
  7. bymyslf

    bymyslf Power Member

    A diferença de performance entre COUNT(*) e COUNT([column]) não é assim tão linear. Depende de alguns factores, como por exemplo, se a coluna em questão permite valores null, etc...

    COUNT(*) vs COUNT(col)
     

Partilhar esta Página