Masz błędne przekonanie, że optymalizator przepisuje instrukcję SQL. Tak nie jest. Przepisywanie zapytania to zadanie przepisywania zapytań , który na przykład zastępuje widoki wraz z ich definicją. Optymalizator wymyśla sekwencję kroków wykonania, aby obliczyć wynik. Tworzy plan , a nie instrukcja SQL.
Optymalizator planuje dwie alternatywy:albo wykonać podplan 1 dla każdego znalezionego wiersza, albo wykonać podplan 2 raz (zauważ, że jest to niezależne od a
), zbuduj tablicę haszującą z wyniku i sondy, która haszuje dla każdego wiersza znalezionego w a
.
W czasie wykonywania PostgreSQL decyduje się na użycie tej drugiej strategii, dlatego subplan 1 nigdy nie jest wykonywany.