Hallo,
ich versuche gerade, eine Suchfunktion über eine Datenbank zu implementieren. Die Daten sind hierarchisch über mehrere Tabellen geordnet. Ich möchte nun je nach Hierarchiestufe meine Abfrage starten. Die Datenbanken sind (vereinfacht so aufgebaut):
Code:
Tabelle a (6 Elemente):
id (primary key)
Tabelle b (200 Elemente):
id (primary key)
refid (foreign key auf Tabelle a)
Tabelle c (600.000 Elemente):
id (primary key)
refid (foreign key auf Tabelle b)
Tabelle d (10.000.000 Elemente):
id (primary key)
refid (foreign key auf Tabelle c)
data (Daten, die ich haben will)
Wenn ich nun alle Daten haben möchte, die unter einem Element in Tabelle c sind, geht das ja ganz einfach:
Code:
SELECT * FROM d WHERE refid=XX
Um alle Daten unter einem Element aus a zu bekommen, verwende ich momentan zwei Joins:
Code:
SELECT * FROM d LEFT JOIN c ON d.refid = c.id LEFT JOIN b ON c.refid = b.id WHERE b.id = XX
Diese Abfrage dauert aber sehr lange (bis zu 15 Minuten), sind ja auch zwei Joins über viele Daten.
Lässt sich diese Abfrage beschleunigen, und wenn ja, wie?
Gruß
xaromz