Certifique-se de informar ao PDO que o valor é um inteiro e não uma string; se o PDO o colocar como uma string, o MySQL terá que converter os valores para comparação. Dependendo de como isso acontece, pode causar grandes lentidão, fazendo com que o MySQL evite usar um índice.
Não tenho certeza sobre o comportamento aqui, mas tive esse problema com o Postgres alguns anos atrás ...