Seite 1 von 1

Artikel Favoriten markieren

Verfasst: Di, 05. Sep 2023 8:38
von ramses
Hallo

ich suche momentan einen Weg um mit Postgres SQL einzelne Artikel in der Datenbank Kundenspezifisch zu markieren um schnellen Zugrif auf die Artikel-Favoriten eines Kunden zu haben.

Die Artikeldatenbank hat ca. 1Mio Datensätze. Pro Kunde sollen darin/daraus bis zu 2000 Datensätze markiert werden können. Die Anzahl Kunden die Artikel markieren sind unbeschränkt. Ziel ist möglichst schnell mit einem SQL Aufruf Zugriff auf alle markierten Artikel eines bestimmten Kunden zu haben.

Bis jetzt habe ich das mit einer Hilfs-Datenbank gelöst. In diese sind jeweils die ID's der Artikel pro Kunden eingetragen. Der Zugriff erfolgt dann in einer for ... next Schlaufe .... Das geht mit wenigen Sätzen sehr gut, mit vielen aber nicht mehr.

Das sollte doch auch einfacher mit SQL gehen?

Ich stehe mir momentan ein wenig auf dem Schlauch und sehe den Weg nicht. Hat jemand eine Idee?

Re: Artike Favoriten markieren

Verfasst: Di, 05. Sep 2023 11:11
von georg
Hallo,


das würde ich unter SQL analog regeln, d.h. die Artikel-Tabelle, sowie eine Tabelle mit dem Aufbau

Kunden-ID
Artikel-ID

Wenn Du nun die Favoriten von Kunden 12346 haben willst, sähe die SQL-Abfrage etwa so aus:

Code: Alles auswählen

SELECT a.kunde, a.artikel, b.artikelname, ... FROM favoriten as a LEFT JOIN artikel AS b ON a.artikel = b.artikel WHERE a.kunde = 12346
Damit solltest Du alle favorisierten Artikel von Kunde 12346 erhalten.

Wenn die Artikel-Tabelle dann noch einen Index über das Feld artikel hat, sollte das auch sehr performant ablaufen.

Re: Artikel Favoriten markieren

Verfasst: Di, 05. Sep 2023 13:01
von ramses
Hallo Georg

Danke, so geht es.

So halbweg habe ich den Ablauf verstanden.

Habe es mit SQL Maestro getestet, die Peformance ist super!

Re: Artikel Favoriten markieren

Verfasst: Di, 05. Sep 2023 13:37
von georg
Hallo,


es gibt noch eine Möglichkeit, das ein wenig zu "beschleunigen".

Wenn solche Abfragen öfter kommen, kann man auch eine VIEW erstellen. Ohne jetzt ins Handbuch zu schauen:

Code: Alles auswählen

CREATE VIEW kundenfav AS SELECT a.kunde, a.artikel, b.artikelname, ... FROM favoriten as a LEFT JOIN artikel AS b ON a.artikel = b.artikel
Diese View verhält sich dann wie eine Tabelle, so dass Du dann nur abfragen musst

Code: Alles auswählen

SELECT * FROM kundenfav WHERE a.kunde = 12346

Re: Artikel Favoriten markieren

Verfasst: Mi, 06. Sep 2023 13:13
von ramses
Hallo Geog

Danke für den Tip mit den View's. Das funktioniert super! Da der View bei änderungen an den zugrunde liegenden Tabellen automatisch nachgeführt wird eine echte Erleichterung!