Nie powinno być żadnej różnicy. Optymalizator powinien wygenerować ten sam plan w obu przypadkach i powinien być w stanie zastosować predykat przed, po lub podczas łączenia w obu przypadkach, w zależności od tego, jakie jest najbardziej wydajne podejście dla tego konkretnego zapytania.
Oczywiście fakt, że optymalizator może ogólnie rzecz biorąc, nie ma gwarancji, że optymalizator będzie faktycznie coś zrobić w konkretnym zapytaniu. Ponieważ zapytania stają się coraz bardziej skomplikowane, niemożliwe staje się wyczerpujące rozważenie każdego możliwego planu zapytania, co oznacza, że nawet przy doskonałych informacjach i doskonałym kodzie optymalizator może nie mieć czasu na zrobienie wszystkiego, co chcesz. Musisz spojrzeć na rzeczywiste plany wygenerowane dla dwóch zapytań, aby sprawdzić, czy są one rzeczywiście identyczne.