Re: How to check a table content efficiently? With LIMIT and OFFSET?

From: Stefan Keller <sfkeller(at)gmail(dot)com>
To: pgsql-general List <pgsql-general(at)postgresql(dot)org>
Subject: Re: How to check a table content efficiently? With LIMIT and OFFSET?
Date: 2011-05-28 21:45:09
Message-ID: BANLkTi=bvFYcdAcQkvrm0gbrg=hGgwGzTw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi,

That's my solution candidate:

CREATE OR REPLACE FUNCTION isnotempty() RETURNS boolean AS '
SELECT (count(*) = 1)
FROM (SELECT osm_id FROM planet_osm_point LIMIT 1 OFFSET 100000) tmp
' LANGUAGE SQL;

Yours, Stefan

2011/5/28 Stefan Keller <sfkeller(at)gmail(dot)com>:
> Hi,
>
> I’d like to monitor a table in a read-only Postgres database by
> writing a PL/pgSQL function.
> The database gets periodically overwritten by a mirroring loading process.
> The success criteria is, that the table contains at least some records
> (actually at least more than 100000).
>
> The first idea which comes to one’s mind is probably a count(*):
>
> SELECT CASE WHEN (count(*) > 10000) THEN 'yes' ELSE 'no' END
> FROM planet_osm_point;
>
> But my goal is to consume as few Postgres server resources as possible.
> So my idea is to retrieve an arbitrary record, like this:
>
> SELECT CASE WHEN (osm_id::text > '') THEN 'yes' ELSE 'no' END
> FROM planet_osm_point LIMIT 1 OFFSET 1000000;
>
> Is there anyone having an even better  better idea?
>
> Yours, Stefan
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Greg Smith 2011-05-29 02:05:46 Re: Shared Buffer Size
Previous Message preetika tyagi 2011-05-28 19:24:11 Re: Shared Buffer Size