Tabelle "Links" enthält zwei Spalten: PARENT_CODE, CHILD_CODEOptimieren Hierarchie Abfrage in Oracle
PARENT_CODE | CHILD_CODE ------------|------------ A1 | B1 A1 | B2 B1 | C1 B1 | C2 B2 | C3 B3 | C3 C3 | D1
Diese Tabelle schließlich verwendet folgende Diagramm zu bilden:
Meine Frage wird sein, wie man eine optimierte Hierarchieabfrage in Oracle schreibt, um den gesamten Graphen verbunden zu bekommen, und der Eingabeparameter wird irgendein Knoten sein.
Um die Eingabe/Ausgabe veranschaulichen, diese SQL vereinfacht: SELECT PARENT_CODE, CHILD_CODE FROM {HIERARCHY QUERY} wobei node = {ANY NODE}
Ich weiß, es gibt eine hierarchische Abfrage in Oracle, aber es wird nicht alle verbundenen Knoten geben. – Adelave
Sie können connect by verwenden, um dies zu tun. Wählen Sie parent_code, child_code, level von den Links, die nach vorherigem child_code = parent_code verbunden sind. Es macht einen linken Baumspaziergang und stellt auch eine Pseudospalte mit der Ebene (Tiefe) bereit, die es gerade bewertet. Damit dies mit jeder Leistung funktioniert, müssen beide Spalten indiziert werden (unabhängig). WHOOPS - wenn B3 kein Kind von A1 ist, bricht dies. –