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 .