![]() |
| | LinkBack | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Erfahrener Benutzer Registriert seit: 16.08.2008 Ort: Mecklenburg-Vorpommern
Beiträge: 314
|
Hallo liebe Entwicklergemeinde! Die Situation: Ich habe eine Datenbank mit folgenden Tabellen: Spezifische Bezeichnung (ca. 500 Datenzeilen) Kategorie (ca. 30 Datenzeilen) Subkategorie (ca. 10.000 Datenzeilen) Argumente (ca. 6.000.000 Datenzeilen) Meine Abfragen funktionieren rekursiv (warum, erkläre ich gleich). Wenn eine Bedingung (z.B. Like "%BLABLABLA%") gegeben ist, dann soll er mir alle Spezifischen Bezeichnungen auslesen, die auf diese Bedingung passen. Zurückgeliefert wird die ID der spezifischen Bezeichnung(spez_ID genannt), diese lautet z.B. 1 Mit dieser gehe ich dann in die Subkategorie und selektiere alle Einträge in dieser, bei denen die spez_ID = 1 ist und prüfe via PHP, ob eine bestimmte Bedingung auf irgendeine der Subkategorien passt. Wenn nicht, mache ich das selbe, nur eben in der Kategorie noch einmal. Gehen wir mal davon aus, dass nun ein Eintrag passt, seine sub_ID wird zurückgeliefert (z.B. 100. Da jede Sub_ID auch einer Kategorie_ID zuordbar ist, wird ebenfalls die Kat_ID zurückgegeben (z.B. 9) Nun gehe ich in die Tabelle Argumente und selektiere alle Einträge, bei denen Sub_ID = 100 ist und suche dann in einer Spalte der Argumente (z.B. der Spalte "String") via LIKE nach einem bestimmten Wort - zurückgeliefert werden alle Argument_IDs die auf die Bedingung passen. Im Ideal- und Regelfall ist das ein einziges Argument. Das alles läuft rekursiv ab und ich setze mindestens 3, maximal 4 querys ab - da bestimmte Funktionen über MySQL nicht funktionieren, sind es mitunter auch 8 Querys für EINE Anfrage. Nun ist es aber so, dass spez_ID eine Art Wurzel ist, da viele Einträge in "Subkategorie" auf eine spez_ID passen, weiterhin passen viele Argumente auf eine Subkategorie, aber auch Kategorie. Anhand eines Beispieles erklärt (die Bedingungen außen vor gelassen) könnte man auch sagen, dass es sich um ein großes Forum handelt, das 500 Unterforen hat, und jedes dieser 500 Foren hat weitere Subforen (aber keine eigenen Themen!), insgesamt also 10.000 Unterforen. und jedes dieser Subforen hat Themen - insgesamt 6.000.000. Alle Subforen sind bestimmten Kategorien zuzuordnen. Ist es sinnvoll, die Bedingungen wieder berücksichtigend, das ganze via Nested Sets zwischen der Subkategorie und den Argumenten zu realisieren, oder ist mein Ansatz, unter Berücksichtigung, dass ich Bedingungen wie z.B. LIKE verwenden MUSS, ganz in Ordnung? Danke Geändert von Sekundentakt (14.01.2009 um 18:07 Uhr) |
| | |
| | Nach oben #3 |
| Christian W. Achatz Registriert seit: 05.02.2007 Ort: München
Beiträge: 198
|
Ich habe bisher immer das ParentID-Prinzip (=Rekursion) verwendet. Performance-Probleme sind dabei bisher nie entstanden.
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> http://adventure-php-framework.org)! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | Nach oben #4 |
| Erfahrener Benutzer Registriert seit: 16.08.2008 Ort: Mecklenburg-Vorpommern
Beiträge: 314
|
Ich habe mir auch schon überlegt, ob ich, aus Performancegründen, nicht einfach die 500 Superforen und ihre für die Bedingungen relevanten Daten gleich beim Aufrufen des Formulars in eine Session speichere und dann das Session-Array durchforste - das spart mir jeweils einen ganzen Query, wenn das erste Ergebnis unzufrieden war und man aus diesem Grunde die Bedingungen verändert. Bei den 10.000 Subforen habe ich mich dagegen entschieden, weil diese durch das Ergebnis einer Überprüfung eines Superforums eingegrenzt werden - mit anderen Worten: Ich bräuchte vielleicht nur 5 Datensätze - und diese könnte mir MySQL auch zurückliefern, warum gleich alle 10.000 herunterladen? Aber mehr verkürzen geht leider nicht mehr. Warum ich wegen der Performance nachfrage? Hier einmal ein Link zu einem Artikel, der mich zum Nachdenken gebracht hat. Nested Sets |
| | |
| | Nach oben #5 | ||
| Christian W. Achatz Registriert seit: 05.02.2007 Ort: München
Beiträge: 198
| Zitat:
Zitat:
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> http://adventure-php-framework.org)! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Nested Sets - Problem mit erstellung der Tabelle | kampfgnom | Datenbanken | 24 | 20.09.2007 14:26 |