What would be a common pattern for a database schema where the a history table is kept for a table that would be filling up?
The reason for creating a history table is that you want to separate the current (operational) data from the historical (query) data.
Generally the history table looks similar to the current table. Any foreign keys in the current table are converted to the actual values in the history table, especially if those values are likely to change over time. The history table doesn't have to be normalized, since you're only selecting and not inserting, updating, or deleting.
A history table generally will have multiple indexes, to facilitate querying by different criteria. A history table is essentially a mini data warehouse.