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

Query lenta nella vista UNION ALL

Questo sembra essere un caso di un errore pilota. Il piano di query "v" seleziona da almeno 5 tabelle diverse.

Ora, sei sicuro di essere connesso al database giusto? Forse ci sono alcune impostazioni funky di search_path? Forse t1 e t2 sono effettivamente viste (possibilmente in uno schema diverso)? Forse in qualche modo stai selezionando dalla vista sbagliata?

Modificato dopo un chiarimento:

Stai utilizzando una funzionalità abbastanza nuova chiamata "rimozione join":http:// wiki.postgresql.org/wiki/What%27s_new_in_PostgreSQL_9.0#Join_Removal

http://rhaas.blogspot.com/2010 /06/perché-unirsi-rimozione-è-cool.html

Sembra che la funzione non si attivi quando è coinvolto tutto il sindacato. Probabilmente dovrai riscrivere la vista utilizzando solo le due tabelle richieste.

un'altra modifica:sembra che tu stia utilizzando un aggregato (come "seleziona conteggio (*) da v" rispetto a "seleziona * da v"), che potrebbe ottenere piani molto diversi a fronte della rimozione del join. Immagino che non andremo molto lontano senza che tu pubblichi le query effettive, le definizioni delle viste e delle tabelle e i piani utilizzati...