hi tom,
thanks for your answer; it is much more efficient your way.
I have two levels of views:
1/ generated on the fly and persistants
2/ generated on the fly just for a user session (I need to destroy these
views, but not the others).
do you know a way to access the creation time of a postgresql object?
bye
Tom Lane wrote:
> Emmanuel SARACCO <esaracco@noos.fr> writes:
>
>>I must retrieve views names in a very short time. what can I use.
>>for the moment, I use:
>>
>
>>SELECT c.relname FROM pg_class c, pg_rewrite r WHERE (((c.relname !~
>>'^pg_'::text) AND (r.ev_class = c.oid)) AND (r.ev_type = '1'::"char"));
>>
>
> If you're using a reasonably recent PG release, there's no need to join
> against pg_rewrite. Just look for pg_class entries with relkind = 'v'.
>
>
>>is there a more performant way to do this? (I have more than 50.000
>>views in my database (those views are generated on the fly to optimize a
>>search engine and keep results in memory)). I am running a sort of
>>"garbage collector" via cron/psql -c every minutes to destroy views
>>older than 10 minutes and I must do this very rapidly!
>>
>
> One must wonder why you create views at all, if you don't intend them
> to stick around for long. Why not just write out the SELECTs in full?
> (If you think there's some performance benefit to using a view, you are
> quite mistaken.)
>
> regards, tom lane
>
>
>
--
Emmanuel SARACCO
Email: esaracco@noos.fr