• One other thing you could try is a small table (or series of tables) that give the oldest valid date for a table. Then join to that.

    In other words, if you have the PrintJobs table and the Labels table, each with information you need. You create a Valid_Dates table, with a single field/column. My queries go from:

    select printjobs, jobdate, job

    from PrintJobs

    to

    create valid_dates ( valid_Date datetime);

    select printjobs, jobdate, job

    from PrintJobs

    inner join Valid_Dates

    on jobdate >= valid_Date

    Then you can adjust this date in Valid_Dates as you archive data. Perhaps before you remove data, reset the valid date for queries.

    You could even start replacing the current tables with views that use this technique. We used to do this with financial information, but in the opposite direction. All queries looked at valid dates, but we could load new data into tables without it being considered until we were ready. That way if we needed to change, or delete/reload, we could for data sets. When we were ready, updated the date in the table to let queries get new data.

    It's really poor man's partitioning, but within a single table and letting us set certain "rows" as valid with a join condition.