Простият отговор е не; никога не съхранявайте възрастта на хората. Променя се за всеки човек всяка година, но, както казвате, трябва да проверявате дали е правилен за всеки човек всеки ден.
Съхранявайте само датата на раждане и след това изчислявайте възрастта, когато избирате от базата данни. Това е само today - date of birth
така че не изисква почти никакви процесори.
РЕДАКТИРАНЕ:
За да разширя коментара си в отговора на ManseUK
има и възможност за провал. Какво се случва, ако вашият сървър/база данни не работи? Или вашата актуализация не се изпълнява в определеното време? Или някой идва и го стартира ръчно, след като актуализацията вече е стартирана за тази дата? Или някой изключва вашия планировчик? Няма опасност това да се случи, ако изчислите Age
както изберете от базата данни.
За да изберете къде възрастта е между 25 и 30 години и като приемете колона ДАТА dateofbirth
вашата заявка би била нещо като:
select *
from users
where dateofbirth between date_add( curdate(), interval -30 year )
and date_add( curdate(), interval -25 year )
Уверете се, че users
е индексиран на dateofbirth
.