в общем если подытожить я бы так сформулировал:
1) если накладно удалять данные часто, делай удаление реже (в конце тестов)
2) если нельзя делать один раз, потому что между тестами есть общее состояние / не могут работать параллельно, вводи изоляцию не через чистку базы, а через уникальные тестовые данные, изолированные в рамках нужных тебе сущностей
3) если все же принято решение чистки базы и это долго, возможно чистить ее можно менее аккуратно, например через truncate и без сохранения бинлога базы