Това изглежда е случай на пилотска грешка. Планът за заявка "v" избира от поне 5 различни таблици.
Сега, сигурни ли сте, че сте свързани с правилната база данни? Може би има някои странни настройки за search_path? Може би t1 и t2 всъщност са изгледи (вероятно в различна схема)? Може би по някакъв начин избирате от грешен изглед?
Редактирано след пояснение:
Използвате доста нова функция, наречена „премахване на присъединяване“: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
Изглежда, че функцията не се задейства, когато участва union all. Вероятно трябва да пренапишете изгледа, като използвате само необходимите две таблици.
друга редакция:Изглежда, че използвате агрегат (като „изберете брой (*) от v“ срещу „изберете * от v“), което може да получи много различни планове в лицето на премахването на присъединяване. Предполагам, че няма да стигнем много далеч, без да публикувате действителните заявки, изгледи и дефиниции на таблици и използвани планове...