PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

In PostgreSQL cosa significa sottopiano hash?

Hai l'idea sbagliata che l'ottimizzatore riscriva l'istruzione SQL. Questo non è il caso. La riscrittura della query è compito del riscrittore di query , che ad esempio sostituisce le viste con la loro definizione. L'ottimizzatore presenta una sequenza di passaggi di esecuzione per calcolare il risultato. Produce un piano , non un'istruzione SQL.

L'ottimizzatore pianifica due alternative:eseguire il sottopiano 1 per ogni riga trovata o eseguire il sottopiano 2 una volta (notare che è indipendente da a ), crea una tabella hash dal risultato e analizza l'hash per ogni riga trovata in a .

Al momento dell'esecuzione, PostgreSQL decide di utilizzare quest'ultima strategia, ecco perché il sottopiano 1 non viene mai eseguito.