I've had to deal with a database of a company whose operation relies heavily on mail campaigns. The emails are kept (the records do not get deleted). So, when the numbers of emails went over 7 million, the mail.mail table peaked at 26GB !!!
Following a suggestion, the mail.mail table was updated so that the body_html field got emptied. After all, the email is connected to a message (mail.message), and we get the original content there.
The result of the udpate was that the mail.mail table went from 26GB to less than 1GB !!!
Here's the question: why do we need to keep a copy of the mail.mail.body field in mail.mail ? What is the purpose of that? In fact, in mail.mail, we get three fields for this: body, body_html and body_content.