Oracle
 sql >> Base de données >  >> RDS >> Oracle

Filtre de requête Oracle SQL dans JOIN ON vs WHERE

Il ne devrait y avoir aucune différence. L'optimiseur doit générer le même plan dans les deux cas et doit pouvoir appliquer le prédicat avant, après ou pendant la jointure dans les deux cas en fonction de l'approche la plus efficace pour cette requête particulière.

Bien sûr, le fait que l'optimiseur peut faire quelque chose, en général, ne garantit pas que l'optimiseur va faire quelque chose dans une requête particulière. Au fur et à mesure que les requêtes se compliquent, il devient impossible de considérer de manière exhaustive tous les plans de requête possibles, ce qui signifie que même avec des informations parfaites et un code parfait, l'optimiseur n'a peut-être pas le temps de faire tout ce que vous voudriez qu'il fasse. Vous devez examiner les plans réels générés pour les deux requêtes pour voir s'ils sont réellement identiques.