La jointure gauche semble être plus rapide car SQL est obligé de faire d'abord la plus petite sélection, puis de se joindre à cet ensemble d'enregistrements plus petit. Pour une raison quelconque, l'optimiseur ne veut pas le faire naturellement.
3 façons de forcer les jointures à se produire dans le bon ordre :
- Sélectionnez le premier sous-ensemble de données dans une table temporaire (ou une variable de table), puis joignez-la
- Utilisez des jointures gauches (et rappelez-vous que cela peut renvoyer des données différentes, car il s'agit d'une jointure gauche et non d'une jointure interne)
- utilisez le mot-clé FORCE ORDER. Notez que si les tailles de table ou les schémas changent, le plan de requête peut ne pas être correct (voir https://dba.stackexchange.com/questions/45388/forcing-join-order )