|
![]() |
#1 |
Участник
|
Цитата:
Но может быть просто поискать другое поле? Которое и с индексом, и дает относительно небольшое число записей? Например, не месяц, а дату. Нет. Если база установлена в Recovery Model = Full, то разницы действительно не будет. Если же база установлена в Recovery Model = Simple, то после окончания каждой транзакции transaction log будет очищаться. вполне возможно, что у автора transaction log сильно растет, а на диске места свободного мало. Вот и мучается SQL, затрачивая каждый раз много времени на увеличение transaction log. |
|
![]() |
#2 |
Участник
|
Цитата:
И да, естественно, включать индекс по RecId будет необходимо. Это понятно, я просто рассчитывал, что конструкция delete_from cамостоятельно открывает и закрывает транзакцию. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
![]() |
#3 |
Участник
|
Э-э-э... По-моему, нет. Хотя могу ошибаться.
|
|
![]() |
#4 |
Участник
|
В течение полутора лет ежедневно выполняется аналогичная задача, общее количество удаляемых записей сейчас порядка 500 тыс.ежедневно, удаление идет блоками с фиксированным числом записей точно так как выше написал sukhanchik. Попробовал сделать через delete_from c отключением skipDatabaseLog(true), skipDeleteActions(true), skipDeleteMethod(true) как написал lev - стало удаляться быстрее примерно в 4-5 раз. Отличный совет, респект. Блокировок и зависаний нет, т.к. делается не один delete_from на весь массив записей, а отдельными транзакциями по складам магазинов (около 40).
|
|
Теги |
ax2009, ccadoconnection, delete_from, оптимизация, удаление |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|