U heeft de misvatting dat de optimizer de SQL-instructie herschrijft. Dat is niet het geval. Het herschrijven van de query is de taak van de query rewriter , die bijvoorbeeld views vervangt door hun definitie. De optimizer komt met een reeks uitvoeringsstappen om het resultaat te berekenen. Het produceert een plan , geen SQL-instructie.
De optimizer plant twee alternatieven:ofwel voer subplan 1 uit voor elke gevonden rij, of voer subplan 2 één keer uit (merk op dat het onafhankelijk is van a
), bouw een hash-tabel van het resultaat en test die hash voor elke rij gevonden in a
.
Op het moment van uitvoering besluit PostgreSQL de laatste strategie te gebruiken, daarom wordt subplan 1 nooit uitgevoerd.