PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Indicizzazione avanzata che coinvolge condizioni OR-ed (pgsql)

A seconda delle condizioni, potrebbe essere logicamente impossibile utilizzare qualsiasi indice per aiutare una condizione complessa utilizzando OR espressioni.

Come MySQL, PostgreSQL 8.0 e precedenti affermano nei loro documenti sugli indici :

Con PostgreSQL 8.1, questo è cambiato .

Tuttavia, se ciò non aiuta, puoi utilizzare UNION soluzione che hai provato (questa è una soluzione comune per gli utenti MySQL, che continua ad avere una limitazione di un indice per tabella).

Dovresti essere in grado di ordinare i risultati di un UNION query, ma devi usare le parentesi per specificare che quel ORDER BY si applica al risultato della UNION , non solo all'ultima sottoquery della catena.

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

Spero che questo aiuti; Non sono un esperto dell'ottimizzatore PostgreSQL. Potresti provare a cercare negli archivi della mailing list o chiedendo sul canale IRC .