Andreas N.: Kind Elemente in einer Hierarchie/Baumstruktur

Beitrag lesen

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