Приведу пример как было с нашим магазином.
Сначала у нас было 10 000 ед. продукции и проблем не составляло при каждом заходе посетителя обращаться в базу и брать оттуда актуальные данные о том, что лучше продается.
Однако когда товаров стало 2млн и проект перешел почти что в high-load, было принято решение раз в полдня залазить в базу, для каждой группы товаров искать там наиболее продаваемый и сразу же строить кеш для отображения.
Так что всё зависит от того, какие системы вы используете, какую нагрузку, какое масштабирование. В каждом случае решения хороши по своему.