Du har missuppfattningen att optimeraren skriver om SQL-satsen. Så är inte fallet. Att skriva om frågan är uppgiften för frågeskrivaren , som till exempel ersätter åsikter med deras definition. Optimeraren kommer med en sekvens av exekveringssteg för att beräkna resultatet. Den producerar en plan , inte en SQL-sats.
Optimeraren planerar två alternativ:antingen exekvera delplan 1 för varje hittad rad, eller exekvera delplan 2 en gång (observera att den är oberoende av a
), bygg en hashtabell från resultatet och proben som hash för varje rad som finns i a
.
Vid exekvering bestämmer sig PostgreSQL för att använda den senare strategin, det är därför delplan 1 aldrig exekveras.