Hey Melvin,
it's advised to manually delete your objects from the bottom up instead of letting the cascade delete the objects for you. The cascade delete is indeed not very fast. And you can gain some time there. Though I don't know how much you’ll gain it’s definitely worth a shot in your case to try out different delete structures according to the associations you've set.
As a follow-up note and possible solution for people also wondering what to do best:
I tried to create a microflow to manually check and delete all entities that would normally be deleted by the cascade. Because I had about 3.3k records in my root entity, about a dozen entities linked to the root entity and another 8 entities linked to one of those dozen entities, the microflow became rather lengthy and with lots of retrieves and add-to-lists inside of the main loop of the root entity and of the secondary loop of one of the others. This eventually led to exactly the same performance as cascade deleting all my records, thus did not solve my problem.
Instead I've now created After Create microflows for all persistent entities and in the MF linked them to the current session. When I now need to start the user off with a “clean slate” (aka: removing all old data and retrieving the new), I simply retrieve every entity from DB linked to the current session and delete it. Although the system does need to run a very small after create microflow for every entity imported and created in this application, the deletion of all old data now completes in seconds rather than minutes and the time it takes to run the after create micoflows is neglectable to say the least.
Hope this will help someone running into a similar performance issue.