Hallo,
es geht um die Abbildung einer Hierarchie/Baumstruktur in einer mysql Datenbank.
Tabelle object:
-------------
| id |
| name |
| parent_id |
-------------
Nun möchte ich zu einer id auch alle Kind Einträge ermitteln, um mir alle zugehörigen objekt Namen zu einer id ausgeben zu lassen.
Zum Beispiel:
SELECT
object.name
FROM
object
WHERE
object.id IN (Liste-mit-allen-kind-objekten-zu-einer-id)
Um nun alle Kind-Objekte zu einer Objekt-id (im SQL: "Liste-mit-allen-kind-objekten-zu-einer-id") zu erhalten müsste ich diese ids ermitteln. Das ist ja weiter kein Problem. Jedoch enthält die object Tabelle ca. 280.000 Einträge, was das SQL-Statement -für den Fall, dass ein Objekt aus einer der obersten Ebene ausgewählt wird- sehr lang und wahrscheinlich auch nicht gerade performant macht.
Meine Idee ist es nun eine weitere Tabelle anzulegen, in der zu einem object (object_id) alle Kindelemente (object_child_id) aufgelistet werden:
child2object
--------------------
| object_id |
| object_child_id |
--------------------
object_id und object_child_id wären dann der Primär-Schlüssel.
Das Statement würde dann so aussehen:
SELECT
object.name
FROM
object
INNER JOIN
child2object
ON
(object.id = child2object.object_child_id)
WHERE child2object.object_id = 'irgendeine-id'
Bei 280.000 Einträgen in der objekt Tabelle wird die child2object Tabelle natürlich auch nicht gerade klein.
Ist das eine gute Lösung oder gibt es bessere Ansätze?
Vielen Dank für Hilfe & viele Grüße
Andreas