PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Verwenden einer temporären Tabelle zum Ersetzen einer WHERE IN-Klausel

Sie brauchen sich wegen des Konflikts keine Sorgen zu machen.

Das pg_temp-Schema ist sitzungsspezifisch. Wenn Sie eine gleichzeitige Anweisung in einer separaten Sitzung haben, verwendet sie ein anderes Schema (selbst wenn Sie sehen, dass sie denselben Namen hat).

Zwei Anmerkungen jedoch:

  1. Jedes Mal, wenn Sie temporäre Objekte erstellen, erstellt der Systemkatalog ein temporäres Schema und die Objekte selbst. Dies kann bei häufiger Verwendung zu Unordnung führen.

    Daher ist es für kleine Sätze/häufige Verwendungen normalerweise besser, sich an einen in zu halten oder ein with -Anweisung (beide kommen mit Postgres recht gut zurecht). Gelegentlich ist es auch nützlich, den Planer mit einer unveränderlichen Set-Returning-Funktion dazu zu bringen, den gewünschten Plan zu verwenden.

  2. Falls Sie sich entscheiden, tatsächlich temporäre Tabellen zu verwenden, ist es normalerweise besser, sie zu indizieren und zu analysieren, sobald Sie sie gefüllt haben. Sonst machst du nicht viel mehr, als einen with zu schreiben Aussage.