Dit lijkt een geval van een pilootfout te zijn. Het "v"-queryplan selecteert uit ten minste 5 verschillende tabellen.
Nu, weet u zeker dat u bent verbonden met de juiste database? Misschien zijn er enkele funky zoekpad-instellingen? Misschien zijn t1 en t2 eigenlijk weergaven (mogelijk in een ander schema)? Misschien selecteert u op de een of andere manier uit de verkeerde weergave?
Bewerkt na verduidelijking:
Je gebruikt een vrij nieuwe functie genaamd "join removal":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
Het lijkt erop dat de functie niet in werking treedt wanneer alle vakbonden erbij betrokken zijn. U moet waarschijnlijk de weergave herschrijven met alleen de vereiste twee tabellen.
nog een bewerking:het lijkt erop dat u een aggregaat gebruikt (zoals "select count(*) from v" vs. "select * from v"), dat enorm verschillende plannen zou kunnen krijgen bij het verwijderen van joins. Ik denk dat we niet ver komen zonder dat u de feitelijke vragen, weergave- en tabeldefinities en gebruikte plannen plaatst...