Effiziente Möglichkeit zur Erstellung einer Matrix

Hallo,

ich habe zwei Tabellen, die über eine Kreuztabelle verbunden sind, wobei die Kreuztabelle wiederum Daten zur Relation enthält.
Daraus erstelle ich eine Matrix, die alle Relationen, sowie deren Zusatzinformationen enthält.
Aktuell verbinde ich die Tabelle mittels joins und arbeite das Ergebnis innerhalb Anwendung ab. Da das Ergebnis allerdings sehr viele Datensätze enthält, ist die Erstellung der Matrix sehr rechenintensiv (mehrere Millionen Schleifendurchläufe) und demnach wenig performant.

Hat einer von euch zufällig eine Idee, wie man das ganze mit PostgreSQL effizienter gestalten kann?

Hier ein simples Beispiel, wie meine DB aufgebaut ist:

Tabelle User: id, name
Tabelle Books: id, title
Tabelle UserBooks: id, user_id, book_id, ammount

Das Ergebnis soll jetzt wiefolgt aussehen:

Users : Book1 : Book2 : Book3 : …
User1 : 2 : 0 : 7 : …
User2 : 4 : 3 : 0 : …

In der ersten Spalte sollen also die User aufgelistet sein und im Header die Bücher.
Die einzelnen Datensätze sollen dann die Anzahl der Exemplare enthalten, die jeder User von diesem Buch besitzt.

Vielen Dank schonmal :smiley:

Schau Dir mal das Contrib-Modul tablefunc an. http://www.postgresql.org/docs/9.3/interactive/tablefunc.html Möglicherweise hilft Dir das.