Re: COUNT & Pagination
От | Christopher Kings-Lynne |
---|---|
Тема | Re: COUNT & Pagination |
Дата | |
Msg-id | 4001EC7F.2080105@familyhealth.com.au обсуждение исходный текст |
Ответ на | COUNT & Pagination (David Shadovitz <david@shadovitz.com>) |
Список | pgsql-performance |
> I understand that COUNT queries are expensive. So I'm looking for advice on > displaying paginated query results. > > I display my query results like this: > > Displaying 1 to 50 of 2905. > 1-50 | 51-100 | 101-150 | etc. > > I do this by executing two queries. One is of the form: > > SELECT <select list> FROM <view/table list> WHERE <filter> LIMIT m OFFSET n > > The other is identical except that I replace the select list with COUNT(*). > > I'm looking for suggestions to replace that COUNT query. I cannot use the > method of storing the number of records in a separate table because my queries > (a) involve joins, and (b) have a WHERE clause. Well, on all my sites, I do what you do and just live with it :P You can investigate using cursors however (DECLARE, MOVE & FETCH) > And an unrelated question: > I'm running PG 7.2.2 and want to upgrade to 7.4.1. I've never upgraded PG > before and I'm nervous. Can I simply run pg_dumpall, install 7.4.1, and then > feed the dump into psql? I'm planning to use pg_dumpall rather than pg_dump > because I want to preserve the users I've defined. My database is the only one > on the system. I recommend something like this: -- disable access to your database to make sure you have a complete dump -- run dump as database owner account su pgsql (or whatever your postgres user is) -- do compressed dump pg_dumpall > backup.sql -- backup old data dir mv /usr/local/pgsql/data /usr/local/pgsql/data.7.2 -- remove old postgres, install new -- run NEW initdb. replace latin1 with your encoding -- -W specifies a superuser password initdb -D /usr/local/pgsql/data -E LATIN1 -W -- restore dump, watching output VERY CAREFULLY: -- (run as pgsql user again) psql template1 < backup.sql > log.txt -- Watch stderr very carefully to check any errors that might occur. -- If restore fails, re-initdb and re-restore Chris
В списке pgsql-performance по дате отправления: