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?
Artikel Favoriten markieren
Moderator: Moderatoren
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2832
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 98 Mal
- Danksagung erhalten: 13 Mal
Re: Artike Favoriten markieren
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:
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.
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
Wenn die Artikel-Tabelle dann noch einen Index über das Feld artikel hat, sollte das auch sehr performant ablaufen.
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2518
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Artikel Favoriten markieren
Hallo Georg
Danke, so geht es.
So halbweg habe ich den Ablauf verstanden.
Habe es mit SQL Maestro getestet, die Peformance ist super!
Danke, so geht es.
So halbweg habe ich den Ablauf verstanden.
Habe es mit SQL Maestro getestet, die Peformance ist super!
Valar Morghulis
Gruss Carlo
Gruss Carlo
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2832
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 98 Mal
- Danksagung erhalten: 13 Mal
Re: Artikel Favoriten markieren
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:
Diese View verhält sich dann wie eine Tabelle, so dass Du dann nur abfragen musst
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
Code: Alles auswählen
SELECT * FROM kundenfav WHERE a.kunde = 12346
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2518
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Artikel Favoriten markieren
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!
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!
Valar Morghulis
Gruss Carlo
Gruss Carlo