Проблема в том, что вы недостаточно определили свои условия. То есть что именно вы оптимизируете?
Например, не работает ли система из-за ночного техобслуживания и нет ли пользователей в системе? И вы удаляете большой% базы данных?
Если в автономном режиме и удаление большого%, возможно, имеет смысл просто создать новую таблицу с данными для хранения, удалить старую таблицу и переименовать. При удалении небольшого% вы, вероятно, захотите группировать вещи настолько большими партиями, насколько позволяет пространство журнала. Это полностью зависит от вашей базы данных, но удаление индексов на время перестройки может повредить или помочь - если вообще возможно из-за того, что он находится в автономном режиме.
Если вы в сети, какова вероятность того, что ваши удаления конфликтуют с пользовательской активностью (и является ли пользовательская активность преимущественно чтением, обновлением или чем-то еще)? Или вы пытаетесь оптимизировать работу с пользователем или скорость выполнения запроса? Если вы удаляете из таблицы, которая часто обновляется другими пользователями, вам нужно выполнить пакет, но с меньшим размером пакета. Даже если вы делаете что-то вроде блокировки таблицы для обеспечения изоляции, это не принесет особой пользы, если ваш оператор удаления занимает час.
Когда вы лучше определите свои условия, вы можете выбрать один из других ответов здесь. Мне нравится ссылка в посте Роба Сандерса для группирования вещей.