Anda memiliki kesalahpahaman bahwa pengoptimal menulis ulang pernyataan SQL. Itu tidak terjadi. Menulis ulang kueri adalah tugas penulis ulang kueri , yang misalnya menggantikan tampilan dengan definisinya. Pengoptimal muncul dengan urutan langkah-langkah eksekusi untuk menghitung hasilnya. Ini menghasilkan rencana , bukan pernyataan SQL.
Pengoptimal merencanakan dua alternatif:jalankan subplan 1 untuk setiap baris yang ditemukan, atau jalankan subplan 2 sekali (perhatikan bahwa ini tidak tergantung pada a
), buat tabel hash dari hasil dan periksa hash untuk setiap baris yang ditemukan di a
.
Pada waktu eksekusi, PostgreSQL memutuskan untuk menggunakan strategi terakhir, itulah sebabnya subplan 1 tidak pernah dieksekusi.