Простым способом было бы запланировать задание, которое выполняется каждую ночь и которое вызывает хранимую процедуру, чтобы удалить все строки старше трех месяцев. В зависимости от вашего O / S это должно быть легко сделать. Делайте это каждую ночь, и количество удаленных данных будет не таким большим, как раз в месяц.
У меня также в прошлом был код в моем SP, который вставлял данные для удаления ненужных данных в то время, так что в основном каждый раз, когда вставляется строка, сразу после вставки в запускался процесс очистки сделал немного обслуживания. Это не будет моим первым выбором, но это выполнимо, если количество вставок мало, и удаление может быть сделано быстро (вы не хотите замедлять пользователя). Приятным побочным эффектом является то, что данные всегда чистые (т.е. все данные всегда <= 3 месяца), но не уверены, имеет ли это значение в вашем приложении. </p>
Вам следует также рассмотреть возможность архивирования строк в другой таблице вместо того, чтобы удалять их, если есть любой шанс, что вы когда-нибудь захотите получить данные для другой цели. Я всегда делаю это, и вы будете удивлены, каким героем вы будете выглядеть, когда какой-то менеджер, который даже не знает, что вы сохраняете данные, внезапно срочно нуждается в этом .... и вы можете доставить за них.