From: | Peter Eisentraut <peter_e(at)gmx(dot)net> |
---|---|
To: | Andreas Tille <andreas(at)an3as(dot)eu> |
Cc: | PostgreSQL <pgsql-de-allgemein(at)postgresql(dot)org> |
Subject: | Re: Funktionsargument für eine "field IN ($1)" Bedingung |
Date: | 2010-12-20 22:47:41 |
Message-ID: | 1292885261.14480.1.camel@vanquo.pezone.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
On tor, 2010-12-16 at 13:21 +0100, Andreas Tille wrote:
> Ich möchte die eigenschaften 1-n zu allen Paketen der Liste ('package1',
> 'package2', ..., 'packagen') abfragen aber im Ergebnis brauche ich nur
> die höchste version (debversion ist ein sortierbarer Datentyp, für den
> MAX() definiert ist) und eine beliebige architecture (in der diese
> höchste version existiert). Für jeden Hinweis, wie das auch noch
> *performant* geht, bin ich natürlich sehr dankbar, denn die sinnvolle
> Aggregierung der in meiner Ausgangsfrage erhaltenen Tabelle liegt mir
> noch etwas schwer im Magen.
Ich würde ungefähr so anfangen:
SELECT package, version, architecture, maintainer, description FROM
packages WHERE (package, version) IN (SELECT package, max(version) FROM
packages WHERE package IN ('gcc', 'python', 'postgresql') GROUP BY
package);
Das ist allerdings totlangsam, weil die UDD keine passenden Indexe
gesetzt hat. Vielleicht mal einen Dump lokal einspielen und versuchen,
ein paar Indexe zu setzen.
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2010-12-20 22:51:22 | Re: Signal 11 |
Previous Message | Martin Spott | 2010-12-20 21:01:41 | Re: Signal 11 |