У меня есть таблица, которая содержит записи журнала для программы, которую я пишу. Я ищу идеи для SQL-запроса (я использую SQL Server Express 2005), который сохранит самое новое число записей X и удалит остальные. У меня есть столбец datetime, который является меткой времени для записи в журнале.
Я полагаю, что будет работать что-то вроде следующего, но я не уверен в производительности с предложением IN для большего количества записей. Производительность не критична, но я мог бы сделать все возможное в первый раз.
DELETE FROM MyTable WHERE PrimaryKey NOT IN
(SELECT TOP 10,000 PrimaryKey FROM MyTable ORDER BY TimeStamp DESC)
Я должен отметить, что этот запрос будет выполняться 3-4 раза в день (как часть другого процесса), поэтому количество записей, которые будут удалены с каждым запросом, будет небольшим по сравнению с количеством записей, которые будут сохраняется.