L'unione a sinistra sembra essere più veloce perché SQL è costretto a eseguire prima la selezione più piccola e quindi a unirsi a questo insieme più piccolo di record. Per qualche motivo l'ottimizzatore non vuole farlo in modo naturale.
3 modi per forzare l'esecuzione dei join nell'ordine corretto:
- Seleziona il primo sottoinsieme di dati in una tabella temporanea (o variabile di tabella), quindi unisciti a essa
- Utilizza i left join (e ricorda che questo potrebbe restituire dati diversi perché è un left join non un inner join)
- utilizza la parola chiave FORCE ORDER. Tieni presente che se le dimensioni delle tabelle o gli schemi cambiano, il piano di query potrebbe non essere corretto (vedi https://dba.stackexchange.com/questions/45388/forcing-join-order )