Mailinglisten-Archive |
Hallo Dennis, Am Donnerstag, 20. September 2007 schrieb Dennis Dohle: > ich versuche gerade, unser CRM-System zu optimieren und bin dabei auf > eine Sache gestoßen, die mich noch etwas nervt. Wir haben im System > einen Bereich, in dem wir Vorgänge wie Anrufe, Faxe, E-Mail zu einer > Person speichern. Beim Anlegen eines Vorgangs kann ich eine > Verknüpfung zu einem schon bestehenden Vorgang auswählen. Eine > Beispielvorgangsliste könnte dann so aussehen: > > Vorgang 1 (ID 1) > ----- Vorgang 2 (ID 2) > ----- Vorgang 3 (ID 3) > ------------- Vorgang (ID 4) > ----- Vorgang (ID 5) > Vorgang (ID 6) > Vorgang (ID 7) > Vorgang (ID 8) > ----- Vorgang (ID 9) > ... > > Hierzu gibt es eine separate Verknüpfungstabelle mit zwei Feldern in > der Datenbank. > > Feld 1: parent > Feld 2: child > > Mit den IDs im Beispiel oben wäre das z.B. dann: > > 1 , 2 > 1 , 3 > 3 , 4 > 1 , 5 > ... > > So, jetzt kommt das Performance-Problem. Ich lesen im Grunde jede > "Ebene" für sich aus, überprüfe dann die Einträge auf Untereinträge > und lese diese wiederum aus. So habe ich im Beispiel oben 9 Einträge, > also auch 9 SELECT-Anweisungen. Finde ich irgendwie nicht schön. > > Hat da jemand vielleicht eine Idee zu? Du könntest zusätzlich in der Verknüpfungstabelle den Hierachiepfad pflegen. Das könnte z.B. so aussehen: 1, 2, 00010002 1, 3, 00010003 3, 4, 000100030004 1, 5, 00010005 Wenn Du dann alle Untervorgänge suchst, kannst Du mit LIKE '<Hierarchiepfad>%' suchen. Dieser Ansatz macht allerdings nur Sinn, wenn die Hierarchietiefe nicht zu groß wird. Sonst wird die Zeichenkette etwas lang. Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive