Что-то делают обычно когда проект не влезает в описание "сейчас никаких проблем".
2 млн записей - это такие копейки.
Что основное можно сделать:
покрутить настройки checkpointer (чтобы checkpoint срабатывал реже - резко меньше random i/o, но при крахе база может дольше стартовать), autovacuum (опустить оба scale_factor куда-нибудь в 0.05 - чтобы автовакуум запускался чаще, но делал меньше работы, плюс уменьшить autovacuum_vacuum_cost_delay - это зависит от дисков)
shared_buffers где-то в 25% от объёма RAM
включить pg_stat_statements и поглядывать топ запросов оттуда