Прежде всего - похоже, что ваш DELETE выполняет сканирование кластерного индекса, я рекомендую сделать следующее:
create index [IX.IndexName] ON t1(YearProcessed, PrimaryKey)
Второе - есть ли необходимость присоединиться к таблице t2?
А затем используйте следующий запрос для удаления строк, предполагая, что ваш столбец PrimaryKey имеет тип INT:
declare @ids TABLE(PrimaryKey INT)
WHILE 1=1
BEGIN
INSERT @ids
SELECT top 10000 DISTINCT t1.PrimaryKey
FROM table t1
INNER JOIN table2 t2 ON t2.PrimaryKey = t1.PrimaryKey
WHERE t1.YearProcessed <= 2007
IF @@ROWCOUNT = 0 BREAK
DELETE t1
WHERE PrimaryKey in (Select PrimaryKey from @ids)
delete from @ids
END
И не забудьте удалить таблицу t2 из объединения, если она не нужна
Если это все еще вызывает блокировки - уменьшите количество строк, удаленных в каждом раунде