Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

otimizar a consulta de contagem do mysql


Se o mysql tiver que contar 11 milhões de linhas, não há realmente uma maneira de acelerar uma contagem simples. Pelo menos não para chegar a uma velocidade inferior a 1 segundo. Você deve repensar como você faz sua contagem. Algumas ideias:

  1. Adicione um campo de incremento automático à tabela. Parece que você não excluiria da tabela, então você pode usar matemática simples para encontrar a contagem de registros. Selecione o número de incremento automático mínimo para a data inicial anterior e o número máximo para a última data e subtraia um do outro para obter a contagem de registros. Por exemplo:
    SELECT min(incr_id) min_id FROM record_updates WHERE date_updated BETWEEN '2009-10-11 15:33:22' AND '2009-10-12 23:59:59';
    SELECT max(incr_id) max_id FROM record_updates WHERE date_updated > DATE_SUB(NOW(), INTERVAL 2 DAY);`
    

  2. Crie outra tabela resumindo a contagem de registros para cada dia. Em seguida, você pode consultar essa tabela para obter o total de registros. Haveria apenas 365 registros para cada ano. Se você precisar chegar a tempos mais refinados, consulte a tabela de resumo para dias completos e a tabela atual apenas para a contagem de registros para os dias inicial e final. Em seguida, adicione-os todos juntos.

Se os dados não estão mudando, o que não parece estar, então as tabelas de resumo serão fáceis de manter e atualizar. Eles vão acelerar significativamente as coisas.