Eddie: 1001 immergleiche Datenbankzugriffe vermeiden / optimieren

Hallo allerseits,

ich stehe vor dem Problem, dass ich aus einer Datenbank mit Kontinenten, Regionen und Ländern einen Baum erzeugen will:

...
Asien
--Südostasien
----Festland
------Kambodscha
------Laos
------Myanmar
------Thailand
------Vietnam
----Inseln
------ ...
----Zentralasien ...

Bisher mache ich das noch nach dem Muster:

  1. Kontinente abfragen (1 Zugriff)
  2. für die 6 Kontinente die 27 zugehoerigen Unterregionen abfragen (6 Zugriffe)
  3. rekursiv weiter Unter-Unterregionen für die Unterregionen abfragen, solange, bis nichts mehr zurück kommt (minimal 27 Zugriffe)
  4. für alle Regionen die zugehörigen Länder abfragen (nochmal minimal 27 Zugriffe)
  5. ggf. für die 216 gefundenen Länder die entspr. Städte und Landesregionen abfragen (216 Zugriffe)

Das sind alles zusammen 287 Datenbankzugriffe bei einem einzigen Aufruf der Seite - und die erbringen immer exakt dasselbe Ergebnis.

Die Seite läuft unter Linux, Apache, MySQL und PHP (war ja klar).

Wie wuerdet ihr das machen?

Danke, Eddie

  1. Moin!

    Wie wuerdet ihr das machen?

    Einmal die DB komplett abfragen und den Baum im Speicher zusammensortieren.

    - Sven Rautenberg

    --
    "Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)
    1. yo,

      Einmal die DB komplett abfragen und den Baum im Speicher zusammensortieren.

      wenn möglich sogar gleich bei der join abfrage sortieren.

      Ilja

      1. Einmal die DB komplett abfragen und den Baum im Speicher zusammensortieren.

        wenn möglich sogar gleich bei der join abfrage sortieren.

        Ihr meint, ich soll einfach zwei grosse Arrays mit allen Regionen und allen Ländern erzeugen und daraus jedesmal den Baum erzeugen?

        Kann ich den Baum nicht auch bspw. als XML-Datei abspeichern? Wird das von PHP irgendwie unterstützt?

        Eddie

  2. Hallo,

    kommste da nicht besser den erzeugten Baum gleich als PHP/HTML Datei zu speichern und nur bei Änderungen neu zu generieren...

    Wenns eh immer derselbe Ausgabecode ist bietet sich das ja an.

    Gruß Helmut