Эффективность удаления зависит от индексов, никак не влияет на то, как срабатывает таймер.Очень важно, чтобы «старые» записи были легко идентифицированы с помощью сканирования диапазона.Если DELETE должен просмотреть всю таблицу, чтобы найти эти «старые» записи, он заблокирует все остальные действия.Обычно в таких случаях таблица сначала кластеризуется по значению даты и времени, а уникальные первичные ключи при необходимости делегируются в некластеризованный индекс.
Теперь, как вызвать таймер, у вас действительно есть три варианта:
Задание агента SQL - лучший вариант для10 минутные интервалы.Единственным недостатком является то, что он не работает на развертываниях SQL Express.Если это вызывает озабоченность, то приемлемой альтернативой являются таймеры разговора и активированные процедуры .
Последний вариант имеет тот недостаток, что приложение должно быть запущено, чтобы таймер инициировал удаление.Если это не проблема (т. Е. Если приложение не запущено, не важно, что записи не удалены), тогда все в порядке.Обратите внимание, что приложения ASP.Net являются очень плохим хостом для таких таймеров из-за того, что IIS и ASP могут выбрать перезапуск и перевести пулы приложений в спящий режим.