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

Brug af en midlertidig tabel til at erstatte en WHERE IN-klausul

Der er ingen grund til at bekymre sig om konflikten.

pg_temp-skemaet er sessionsspecifikt. Hvis du har en samtidig sætning i en separat session, vil den bruge et andet skema (selvom du ser det som at have det samme navn).

To bemærkninger dog:

  1. Hver gang du opretter midlertidige objekter, opretter systemkataloget et midlertidigt skema og selve objekterne. Dette kan føre til rod, hvis det bruges ofte.

    Til små sæt/hyppige brug er det derfor normalt bedre at holde sig til en in eller en with udsagn (som begge Postgres klarer ret godt med). Det er også lejlighedsvis nyttigt at "narre" planlæggeren til at bruge den plan, du søger, ved at bruge en uforanderlig sæt returneringsfunktion.

  2. Hvis du beslutter dig for rent faktisk at bruge midlertidige tabeller, er det normalt bedre at indeksere og analysere dem, når du har udfyldt dem. Ellers laver du ikke meget mere end at skrive en with erklæring.



  1. Spring JDBC-understøttelse og stort datasæt

  2. oprette milliontabel i en database?

  3. Får du en ekstern tabels placering og filnavn?

  4. En syntaks til tilpasset doven-evaluering/kortslutning af funktionsparametre