Eu tenho uma tabela MySQL que tem duas colunas: ID e contagem. Tem um índice no campo ID.
Agora, se eu tiver que obter a soma de todas as contagens entre dois IDs, posso escrever uma consulta como:
Select SUM(count) from table where id between x and y
ou eu posso pegar
select count from table where id between x and y
E, em seguida, percorra o resultado e calcule a soma da contagem no código do meu aplicativo
Qual deles é melhor, considerando que a velocidade é a coisa essencial aqui. A indexação na contagem ajuda? Ou posso escrever um SQL diferente?
A indexação na coluna de contagem ajudaria de alguma forma?
Tenho cerca de 10000 solicitações por segundo chegando e estou usando um balanceador de carga e 5 servidores para isso.
Respostas:
1 para resposta № 1O segundo é o correto. Não há necessidade de somar uma contagem, pois a contagem retorna como um único valor. Ela só precisa ser executada uma vez.
A menos que você tenha uma coluna chamada count
, em que você deseja somar todos os valores ...
EDITAR
Porque você está dizendo que tem uma coluna chamada Count
, você usaria a primeira consulta:
Select SUM(count) from table where id between x and y
0 para resposta № 2
Use a abordagem 1 como você salvaria na busca de dados do MySQL e iterar sobre ela.
O tempo gasto pelo MySQL para executar qualquer uma das suas consultas seria quase o mesmo, mas a segunda abordagem exigiria um loop através dos resultados e somando-os; sobrecarga desnecessária.