Les sous-requêtes s'exécutent à chaque fois que vous les évaluez (dans MySQL en tout cas, pas tous les SGBDR), c'est-à-dire que vous exécutez essentiellement 7 millions de requêtes ! L'utilisation d'un JOIN, si possible, réduira ce nombre à 1. Même si l'ajout de l'indexation améliore les performances de ceux-ci, vous les exécutez toujours.