sql >> Databasteknik >  >> RDS >> PostgreSQL

Använder en tillfällig tabell för att ersätta en WHERE IN-sats

Det finns ingen anledning att oroa sig för konflikten.

Schemat pg_temp är sessionsspecifikt. Om du har ett samtidig uttalande i en separat session kommer det att använda ett annat schema (även om du ser det som att det har samma namn).

Två anteckningar dock:

  1. Varje gång du skapar tillfälliga objekt skapar systemkatalogen ett tillfälligt schema och själva objekten. Detta kan leda till rörigt om det används ofta.

    Så för små uppsättningar/frekventa användningar är det vanligtvis bättre att hålla sig till en in eller en with uttalande (som båda Postgres klarar ganska bra av). Det är också ibland användbart att "lura" planeraren att använda vilken plan du än söker genom att använda en oföränderlig uppsättningsreturfunktion.

  2. Om du bestämmer dig för att faktiskt använda tillfälliga tabeller är det vanligtvis bättre att indexera och analysera dem när du har fyllt i dem. Annars gör du lite mer än att skriva en with uttalande.



  1. C# -- Hämta data från MySQL och beställa dem på sidor utan DataGridView

  2. Grundläggande tabelluttryck, del 9 – vyer, jämfört med härledda tabeller och CTE

  3. Skriv ut rankning från summa i PHP &MySQL i 1,1,3,4, etc Order

  4. oracle hur man överför kolumner till rader utan UNION