We remove multi-million rows after a variety of time-periods on several systems using partitioning.
It isn't an easy thing to create for an existing system that already contains a lot of data, but I have done it.
There are a couple of articles on my blog site to explain partition switching and setting it up to automatically clear data.