Resolvi meu problema de consulta lenta. Para resumir o problema, levava 22 segundos para consultar 7.000 linhas de uma tabela indexada de 20 milhões de linhas e 1,7 GB. O problema era que o cache era muito pequeno e a consulta tinha que ir para o disco para cada consulta. Eu pensaria que o acesso ao disco seria mais rápido do que eu estava vendo porque eu estava saindo de uma coluna indexada, então a quantidade de dados lidos no disco deveria ser pequena. Mas acho que há muita sobrecarga ao acessar o armazenamento do InnoDB em disco.
Depois de definir
innodb_buffer_pool_size=1024M
no arquivo my.ini, a consulta inicial levaria muito tempo, mas todas as consultas subsequentes terminariam em menos de um segundo. Infelizmente, o perfil não ajudou muito.