Re: select count()

From: "Markus Wollny" <Markus(dot)Wollny(at)computec(dot)de>
To: "Peter Eisentraut" <peter_e(at)gmx(dot)net>, <tho(at)lihas(dot)de>
Cc: <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: select count()
Date: 2005-10-13 10:35:03
Message-ID: 2266D0630E43BB4290742247C8910575082D362A@dozer.computec.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

pgsql-de-allgemein-owner(at)postgresql(dot)org wrote:
> Thomas Hoth wrote:
>> Leider ist so ein SELECT COUNT nicht gerade besonders schnell, ich
>> kann den query nunmal aber nicht ändern, hat vielleicht jemand nen
>> Tip wie ich den query schneller bekommen? Indizes habe ich als btree
>> gesetzt.
>
> Da kann man wenig machen, außer vielleicht den Cache groß
> genug halten, damit die Tabelle nicht von der Festplatte gelesen
> werden muss. Außerdem sollte man VACUUM richtig ausführen, damit die
> Tabelle nicht zu groß wird. Ein Index ist jedenfalls
> vollkommen nutzlos.

Das trifft für count(*) ohne Bedingung zu - mit einer WHERE-Bedingung kann ein Index jedoch durchaus sinnvoll sein. Bei den einfachen counts auf große Tabellen kann man sich mit einem Workaround über Trigger und eine Hilfstabelle behelfen, die die jeweilige Zeilenzahl hält - allerdings muss man dann natürlich die Queries selbst umschreiben, keine Ahnung, ob das in diesem speziellen Fall eine Option ist.

Viele Grüße

Markus

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Peter Wullinger 2005-10-13 22:21:46 Re: Array als Selektionsfilter benutzen
Previous Message B.Max 2005-10-13 06:22:56 Array als Selektionsfilter benutzen