@A.H's vysvětlení je přesný pro PostgreSQL 9.1 nebo starší . Je tedy použitelný pro OP, který používá zastaralou verzi 8.3.
Nicméně PostgreSQL 9.2 přinesl v této oblasti zásadní aktualizaci. Funkce PL/pgSQL se staly mnohem chytřejšími ohledně toho, kdy přeplánovat. Cituji poznámky k vydání pro 9.2 zde
Odvážný důraz můj.
Ergo:Jedno řešení pro OP by bylo upgradovat na PostgreSQL 9.2+ a vše by mělo fungovat automaticky.