Вопрос об удалении старых записей из базы данных - PullRequest
0 голосов
/ 05 апреля 2011

Итак, у меня есть таблица SQL Server.

В этой таблице есть столбец, который показывает дату и время, когда она была вставлена.

Как мне запустить что-то, что всегда удаляет записи старше 24 часов?

Ответы [ 3 ]

3 голосов
/ 05 апреля 2011

Да, посмотрите на это: Как: запланировать задание (SQL Server Management Studio)

, а затем просто запланировать запрос:

delete from table_name where date_created < dateadd(d,-1,GETDATE())
3 голосов
/ 05 апреля 2011

Я хотел бы добавить пару вещей к этому обсуждению ...

  1. Чтобы избежать сканирования первичного ключа, убедитесь, что в указанном столбце даты и времени есть индекс (уникальный или не зависящий от данных).
  2. Также просмотрите планы выполнения оператора, который вы пытаетесь использовать, и рассмотрите возможность включения его в транзакцию с последующим откатом, чтобы можно было повторить процесс и оценить различия.

Например: сравнение

date_created < dateadd(d,-1,GETDATE())

С

date_created < getdate()-1

Показывает, что функция dateadd значительно увеличивает издержки при оценке и, хотя сканирование будет быстрее, чем сканирование PK, всегда лучше сниматьдля самого быстрого варианта в целом.

2 голосов
/ 05 апреля 2011
DELETE FROM <tableName> WHERE <col> < getdate()-1 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...