Wydaje się, że to przypadek błędu pilota. Plan zapytań „v” wybiera z co najmniej 5 różnych tabel.
Czy jesteś pewien, że masz połączenie z właściwą bazą danych? Może są jakieś dziwne ustawienia search_path? Może t1 i t2 to faktycznie widoki (być może w innym schemacie)? Może w jakiś sposób wybierasz z niewłaściwego punktu widzenia?
Edytowane po wyjaśnieniu:
Używasz całkiem nowej funkcji o nazwie „usuwanie dołączania” :http:// wiki.postgresql.org/wiki/What%27s_new_in_PostgreSQL_9.0#Join_Removal
http://rhaas.blogspot.com/2010 /06/dlaczego-dołącz-usunięcie-jest-fajne.html
Wygląda na to, że ta funkcja nie uruchamia się, gdy w grę wchodzą wszystkie związki. Prawdopodobnie będziesz musiał przepisać widok, używając tylko wymaganych dwóch tabel.
inna edycja:Wygląda na to, że używasz agregatu (takiego jak „wybierz liczbę(*) z v” vs. „wybierz * z v”), które mogą uzyskać zupełnie inne plany w obliczu usunięcia dołączenia. Myślę, że nie zajdziemy daleko, jeśli nie opublikujesz rzeczywistych zapytań, definicji widoków i tabel oraz użytych planów...