As subconsultas são executadas toda vez que você as avalia (no MySQL de qualquer maneira, nem todos os RDBMSes), ou seja, você está basicamente executando 7 milhões de consultas! Usar um JOIN, se possível, reduzirá isso para 1. Mesmo que a adição de indexação melhore o desempenho deles, você ainda os estará executando.