Quatro milhões de linhas não é muito.
Uma diferença de um byte entre os tipos de dados datetime e timestamp é o último coisa que você deve considerar ao escolher entre esses dois tipos de dados. Revise suas especificações .
Fazendo um timestamp parte da sua chave primária é uma má ideia. Pense em revisar qual chave primária significa em um banco de dados SQL.
Coloque um índice em sua coluna de carimbo de data/hora. Obtenha um plano de execução e cole-o em sua pergunta. Determine sua mediana desempenho da consulta e cole isso na sua pergunta também.
Retornar as linhas de um único dia de uma tabela indexada de 4 milhões de linhas no meu computador desktop leva 2 ms. (Ele retorna cerca de 8.000 linhas.)