knowledge-database (beta)

Current group: pgsql.performance

Re: [SQL] OFFSET impact on Performance???

Re: [SQL] OFFSET impact on Performance???  
Merlin Moncure
 Re: [SQL] OFFSET impact on Performance???  
Alex Turner
From:Merlin Moncure
Subject:Re: [SQL] OFFSET impact on Performance???
Date:Thu, 20 Jan 2005 12:00:06 -0500
> I am also very interesting in this very question.. Is there any way to
> declare a persistant cursor that remains open between pg sessions?
> This would be better than a temp table because you would not have to
> do the initial select and insert into a fresh table and incur those IO
> costs, which are often very heavy, and the reason why one would want
> to use a cursor.

Yes, it's called a 'view' :-)

Everything you can do with cursors you can do with a view, including
selecting records in blocks in a reasonably efficient way. As long as
your # records fetched is not real small (> 10) and your query is not
super complex, you can slide your view just like a cursor with zero real
impact on performance.

If the query in question does not scale in time complexity with the
amount of data returned (there is a fix processing step which can't be
avoided), then it's materialized view time, such that they can be done
in PostgreSQL.

Now, cursors can be passed around in pl/pgsql functions which makes them
very useful in that context. However, for normal data processing via
queries, they have some limitations that makes them hard to use in a
general sense.

Merlin

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
From:Alex Turner
Subject:Re: [SQL] OFFSET impact on Performance???
Date:Thu, 20 Jan 2005 16:35:12 -0500
How do you create a temporary view that has only a small subset of the
data from the DB init? (Links to docs are fine - I can read ;). My
query isn't all that complex, and my number of records might be from
10 to 2k depending on how I implement it.

Alex Turner
NetEconomist


On Thu, 20 Jan 2005 12:00:06 -0500, Merlin Moncure
wrote:
> > I am also very interesting in this very question.. Is there any way to
> > declare a persistant cursor that remains open between pg sessions?
> > This would be better than a temp table because you would not have to
> > do the initial select and insert into a fresh table and incur those IO
> > costs, which are often very heavy, and the reason why one would want
> > to use a cursor.
>
> Yes, it's called a 'view' :-)
>
> Everything you can do with cursors you can do with a view, including
> selecting records in blocks in a reasonably efficient way. As long as
> your # records fetched is not real small (> 10) and your query is not
> super complex, you can slide your view just like a cursor with zero real
> impact on performance.
>
> If the query in question does not scale in time complexity with the
> amount of data returned (there is a fix processing step which can't be
> avoided), then it's materialized view time, such that they can be done
> in PostgreSQL.
>
> Now, cursors can be passed around in pl/pgsql functions which makes them
> very useful in that context. However, for normal data processing via
> queries, they have some limitations that makes them hard to use in a
> general sense.
>
> Merlin
>
>

---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
joining column's datatypes do not match
   

Copyright © 2006 knowledge-database   -   All rights reserved