Zdá se, že se jedná o chybu pilota. Plán dotazů "v" vybírá z alespoň 5 různých tabulek.
Jste si jisti, že jste připojeni ke správné databázi? Možná existují nějaká funky nastavení search_path? Možná jsou t1 a t2 ve skutečnosti pohledy (možná v jiném schématu)? Možná nějak vybíráte ze špatného pohledu?
Upraveno po upřesnění:
Používáte zcela novou funkci nazvanou „odebírání spojení“ :http:// wiki.postgresql.org/wiki/What%27s_new_in_PostgreSQL_9.0#Join_Removal
http://rhaas.blogspot.com/2010 /06/why-join-removal-is-cool.html
Zdá se, že tato funkce se nespustí, když je zapojena všechna unie. Pravděpodobně budete muset přepsat pohled pouze pomocí požadovaných dvou tabulek.
další úprava:Zdá se, že používáte agregaci (jako „vyberte počet(*) z v“ vs. „vyberte * z v“), což by mohlo mít velmi odlišné plány tváří v tvář odstranění spojení. Myslím, že se nedostaneme daleko, aniž byste zveřejnili skutečné dotazy, definice pohledů a tabulek a použité plány...