Find another way to handle workflow history in the long-term.
I'm aware that keeping the history (for its table joins) in the long run is harming to the farm, so just disabling the workflow auto cleanup timer job is not an option.
You should offer a way look for workflow history by demand, in a way the table joins are made at the moment, and not kept. Even if that takes minutes, final user will understand. Maybe if that can be made/hosted on a separate database in order not to stress out both config and content databases.
Another option is to have workflow actions audit-able and, that way, it can be analyzed and reported as audit information (which it is, in the end).
Bob Anderson commented
our current work-around is to create a custom list and add actions to the workflow to insert items to this list that track workflow progress.
Bottom line: don't rely on the out-of-the-box Workflow History for historical reporting purposes.
Marcos Babu commented
A user suggested to make easier the option to disable the Workflow Auto Cleanup timer job. I *don't* agree with this approach: