Голосование за сущности (когда голосов и сущностей много)
1 500 000 это не много.

Вариантов работы с большим количеством данных множество. Зависит от того, какие цифры нужно получить. К примеру, если не нужно помнить кто конкретно за что конкретно голосовал, то можно данные агрегировать. Т.е. взять сущность, посчитать сколько голосов отдано за период Х и запись в базу одной запись, а из таблицы с голосами для данной сущности за этот период голоса удалить.

Если нужно все и всегда, то бъем таблицу на куски и старые записи просто сохраняем в архивные таблицы. Данные метод совершенно не исключает агрегирования, он просто помнить все голоса в системе.

P.S. Можно. Я без проблем нашел свой голос 2-ей давности.
Можно, например, хранить не каждый голос, а какое-то усреднённое значение у самой сущности.