Chris Gamache <cgg007(at)yahoo(dot)com> writes:
> It runs "widget" on 10000 records. The damage would be negligible if it could
> run on the 100...
So do the function calculation outside the UNION/ORDER BY.
SELECT name, address, city, state, zip, widget(name, address, city, state,
zip)
FROM
((SELECT * FROM eastern_usa
ORDER BY state, city, zip, name
LIMIT 5000
UNION ALL
SELECT * FROM western_usa
ORDER BY state, city, zip, name
LIMIT 5000)
ORDER BY 4, 3, 5, 1 LIMIT 100 OFFSET 0) ss;
You might have to fool with the parenthesization a little to get it
to parse ...
regards, tom lane