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

Pokročilé indexování zahrnující podmínky OR-ed (pgsql)

V závislosti na podmínkách může být logicky nemožné použít jakýkoli index k pomoci složitému stavu pomocí OR výrazy.

Stejně jako MySQL, PostgreSQL 8.0 a dřívější stavy v jejich dokumentech o indexech :

S PostgreSQL 8.1 se to změnilo .

Pokud to však nepomůže, můžete použít UNION řešení, které jste vyzkoušeli (toto je běžné řešení pro uživatele MySQL, které má nadále omezení na jeden index na tabulku).

Měli byste být schopni objednat výsledky UNION dotaz, ale musíte použít závorky k určení, že ORDER BY platí pro výsledek UNION , nejen na poslední dílčí dotaz v řetězci.

(SELECT ... )
UNION
(SELECT ... )
UNION
(SELECT ... )
ORDER BY columnname;

Doufám, že to pomůže; Nejsem odborník na optimalizátor PostgreSQL. Můžete zkusit prohledat archivy konference nebo se zeptejte na kanálu IRC .



  1. Jak filtrovat řádky bez NULL ve sloupci

  2. Jak uložit pole bajtů v Oracle?

  3. Jak mohu potlačit úspěšně dokončenou zprávu procedury PL/SQL v sqlplus?

  4. Indexování tabulek na PostgreSQL pro výkon