Un plan d'explication est généralement le meilleur point de départ chaque fois que vous avez une requête lente. Pour en obtenir un, lancez
DESCRIBE SELECT source_id FROM directions WHERE (destination_id = 10);
Cela vous montrera un tableau répertoriant les étapes nécessaires pour exécuter votre requête. Si vous voyez une grande valeur dans la colonne 'rows' et NULL dans la colonne 'key', cela indique que votre requête doit parcourir un grand nombre de lignes pour déterminer lesquelles renvoyer.
Dans ce cas, l'ajout d'un index sur destination_id devrait considérablement accélérer votre requête, au prix d'une certaine vitesse d'insertion et de suppression (puisque l'index devra également être mis à jour).