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
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 |