Re: Funktionsargument für eine "field IN ($1)" Bedingung

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.

In response to

Responses

Browse pgsql-de-allgemein by date

  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