Esse vazamento de memória só seria um problema se estivesse matando o script com um erro de "memória esgotada". O PHP felizmente coletará o lixo de qualquer objeto/variável não utilizado por conta própria, mas o coletor não irá chutar até que seja necessário - a coleta de lixo pode ser uma operação muito cara.
É normal ver o uso de memória aumentar mesmo se você estiver constantemente reutilizando os mesmos objetos/variáveis - não é até que o uso de memória exceda um certo nível que o coletor será acionado e limpa a casa.
Suspeito que você poderia tornar as coisas muito mais rápidas se agrupasse IDs de usuário em grupos e emitisse menos atualizações, alterando mais registros com cada um. por exemplo. faça o seguinte:
UPDATE user_roundscores SET ursUpdDate=NOW() WHERE ursUserTeamIdFK IN (id1, id2, id3, id4, id5, etc...)
em vez de fazer uma atualização por usuário. Menos viagens de ida e volta pela camada de interface de banco de dados e mais tempo no servidor =execução mais rápida.
Além disso, considere o impacto de agora expandir isso para milhões de usuários, como você diz em um comentário. Um milhão de atualizações individuais levarão um tempo não trivial para serem executadas, então o
NOW()
não será uma "constante". Se levar 5 minutos para fazer a execução completa, você obterá uma grande variedade de ursUpdDate
carimbos de data/hora. Você pode querer considerar o cache de um único NOW()
chame uma variável do lado do servidor e emita as atualizações nessa variável: SELECT @cachednow :p NOW();
UPDATE .... SET ursUpDate = @cachednow WHERE ....;