Слишком большая нормализация ухудшит производительность, поэтому в реальном мире вы должны найти баланс.
Я справился с подобной ситуацией двумя способами.
1) с использованием DB2 Я использовал MQT (материализованную таблицу запросов), которая работает как только представление, управляется запросом, и вы можете запланировать, как часто вы хотите его обновлять;например, каждые 5 мин.Затем в этой таблице хранились значения счетчиков.
2) в самом программном пакете. Я установил такую информацию в качестве системной переменной.Таким образом, в Apache вы можете установить общесистемную переменную и обновлять ее каждые 5 минут.Тогда это несколько точно, но вы выполняете свой запрос "count (*)" раз в пять минут.Вы можете запустить его демоном или управлять им по запросам страниц.
Я использовал класс-обертку, чтобы сделать это, так что это было давно, но я думаю, что в PHP все было просто: $ _SERVER ['report_page_count'] = array ('timeout' => 1234569783, 'count' => 15);
Тем не менее, однако вы сохраняете это единственное значение, которое избавляет вас от запуска его при каждом запросе.