From: | "Gyorgy Molnar" <gyorgy(dot)molnar(at)home(dot)com> |
---|---|
To: | <pgsql-sql(at)postgresql(dot)org> |
Subject: | Queue in SQL |
Date: | 2001-11-27 14:11:18 |
Message-ID: | 001601c1774d$66bb1b90$3201a8c0@Athlon |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Hi!
Question:
I need to store some incoming data and retrieve them one by one (LIFO).
Different processes will manage the storage and the retrieval.
How can I retrieve only the first row from a table?
==================
Explanation
I intend to use libpq and C. as far as I know to retrieve the result from a
query I need to do the following:
BEGIN A TRANSACTION
DECLARE CURSOR cursor FOR SELECT
FETCH one row from cursor
Process
CLOSE cursor
DELETE row
COMMIT
Let say I have 100,000 records in my table, I have to pick up only the first
row. I do not have any special criteria to execute a query, and I only need
the oldest added row (let say the first row if the table is indexed).
How can I narrow the search criteria, not to receive all of the 100,000
record in the result?
Unfortunately, I do not know the internal working of the SELECT. I think it
should create a temporary object to store the result. This object size may
depend on the number of the rows in the result and the size of the stored
data per row. I can fetch the rows one by one using this temporary object.
Kind Regards,
Gyorgy Molnar
From | Date | Subject | |
---|---|---|---|
Next Message | Richard Poole | 2001-11-27 14:25:30 | Re: count(*) - join question |
Previous Message | Josh Berkus | 2001-11-27 01:23:13 | Re: PL/pgSQL examples NOT involving functions |