Не храните каждый просмотр, храните кол-во просмотров каждой страницы за день.
Так как минимальная группировка это день, то стоит данные так и хранить
item_id
date_day
counter
если нужно отдельно отсеивать повторные просмотры одного пользователя, то для этого можно завести отдельную таблицу для того чтобы делать проверки перед увеличением счётчика
item_id + user_id
одна эта оптимизация позволит сократить количество хранимых и обрабатываемых данных в аналитике
ещё один трюк который использую для построения топа за день/неделю/месяц это внутри каждого элемента хранить три счётчика для сортировки
item_id
counter_1
counter_7
counter_30
Смысл в том что в течении дня эти счётчики увеличиваются при просмотрах независимо от счётчиков с аналитикой
Раз в сутки делается синхронизация, и для каждого item_id выставляются актуальные значения по сумме из аналитики и дальше снова целый день счётчики накручиваются независимо добавляя актуальные данные за день без необходимости что-то синхронизировать каждый час.