sql >> Databáze >  >> RDS >> PostgreSQL

Použití dočasné tabulky k nahrazení klauzule WHERE IN

Není třeba se obávat konfliktu.

Schéma pg_temp je specifické pro relaci. Máte-li souběžný příkaz v samostatné relaci, použije jiné schéma (i když vidíte, že má stejný název).

Dvě poznámky však:

  1. Pokaždé, když vytvoříte dočasné objekty, systémový katalog vytvoří dočasné schéma a samotné objekty. To může při častém používání vést k nepořádku.

    Pro malé sady/časté použití je tedy obvykle lepší držet se in nebo with prohlášení (s oběma se Postgres vyrovnává docela dobře). Občas je také užitečné „oklamat“ plánovače, aby použil jakýkoli plán, který hledáte, pomocí funkce vracení neměnné sady.

  2. V případě, že se rozhodnete skutečně používat dočasné tabulky, je obvykle lepší je indexovat a analyzovat, jakmile je zaplníte. Jinak děláte o něco víc, než že píšete with prohlášení.



  1. Jak optimalizovat dotaz s 10+ spojeními?

  2. Co znamená předchozí v Oracle?

  3. Jak vybrat maximální řádek pro každou skupinu v SQL

  4. Referenční alias (vypočítaný v SELECT) v klauzuli WHERE