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

Utilizzo di una tabella temporanea per sostituire una clausola WHERE IN

Non c'è bisogno di preoccuparsi del conflitto.

Lo schema pg_temp è specifico della sessione. Se hai un'istruzione simultanea in una sessione separata, utilizzerà uno schema diverso (anche se vedi che ha lo stesso nome).

Due note, però:

  1. Ogni volta che si creano oggetti temporanei, il catalogo di sistema crea uno schema temporaneo e gli oggetti stessi. Questo può creare disordine se usato frequentemente.

    Quindi, per piccoli set/usi frequenti, di solito è meglio attenersi a un in o un with affermazione (con cui Postgres riesce a far fronte abbastanza bene). Occasionalmente è anche utile "ingannare" il pianificatore facendogli utilizzare il piano che stai cercando utilizzando una funzione di restituzione di un set immutabile.

  2. Nel caso in cui tu decida di utilizzare effettivamente tabelle temporanee, di solito è meglio indicizzarle e analizzarle una volta che le hai riempite. Altrimenti stai facendo poco più che scrivere un with dichiarazione.