По моему опыту, вы, вероятно, будете использовать GORM для удаления записей, представляющих интерес.Ниже приведен фрагмент кода, который я использовал для своего проекта.Как вы упомянули в комментарии ниже, рекомендуется параллелизм, потому что таблица содержит три миллиона записей.
Date specifiedDate = Date.parse("yyyy-MM-dd hh:mm:ss", "2010-04-03 1:23:45") // pass your date here by extrating from params
def result = CoreEvent.where { date < specifiedDate }
List<Integer> iDs = result.list(sort: "date").collect { it.id }
GparsPool.withPool {
iDs.eachParallel {
// we need to wrap inside a single transaction for parallelism
CoreNotifications.withTransaction {
CoreNotifications.where { id == it }.deleteAll()
}
}
}
Я надеюсь, что этот код поможет вам решить вашу проблему ожидаемым образом.