Un piano di spiegazione è di solito il miglior punto di partenza ogni volta che hai una query lenta. Per ottenerne uno, corri
DESCRIBE SELECT source_id FROM directions WHERE (destination_id = 10);
Questo ti mostrerà una tabella che elenca i passaggi necessari per eseguire la tua query. Se vedi un valore grande nella colonna "righe" e NULL nella colonna "chiave", ciò indica che la tua query deve scansionare un numero elevato di righe per determinare quali restituire.
In tal caso, l'aggiunta di un indice su destination_id dovrebbe velocizzare notevolmente la tua query, a un certo costo per inserire ed eliminare la velocità (poiché anche l'indice dovrà essere aggiornato).