Я человек не образованный, УЗов не заканчивал — учился в основном по доступным книгам, так что сильно не пинайте :)
Есть такой термин как «денормализация данных». Я для таких случаев придумал для себя «денормализацию таблиц».
Например, у нас есть новостной ресурс, в котором нельзя физически удалять новости. Т.е. удаленные новости должны быть доступны при необходимости из панели управления, но для клиентской части они «отсутствуют». Я делал дубликат таблицы, в которую при удалении переносил запись со всеми полями. Это разгружало рабочую таблицу, но нагружало приложение в случае необходимости запроса к удаленной записи. А в виду того что таких запросов обычно в тысячи раз меньше — я остановился на таком подходе.
Т.е. я в своих решениях использовал (при необходимости) union совместно с кешированием.