WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 12.09.2003, 16:33   #1
Alex1
Alter Sack
 
Benutzerbild von Alex1
 
Registriert seit: 19.09.1999
Ort: An der schönen alten Donau
Alter: 53
Beiträge: 1.579

Mein Computer

Standard mySQL/php: wie vermeide ich zuviele Queries (bitte lesen)

Ich schreibe gerade an einem Linkverzeichnis in php mit einer mySQL DB im Hintergrund.
Die Links sind in Kategorien eingeteilt, diese Kategorien können Subkategorien enhalten, die wiederum Links und weitere Subsubkategorien enthalten können usw.
Theoretisch also unendlich tief
Ich will beim browsen durch die Kategorien angezeigt bekommen:
  • Enthaltene Unterkategorien (die nächsttiefere Ebene)
  • Anzahl der Links darin (also inklusive den Links in den Sub- Subsub-...Kategorien - unendlich tief)
  • Die neu hinzugekommenen Links (wieder unendlich tief in die Kategorien reinschauen...)
  • Upgedatete Links (detto)
Ich schaffs ja schon, die oben genannten Dinge mit rekursiven Funktionen anzuzeigen und zu zählen.
Das Problem ist: die mySQL-Queries, um die Kategorien unendlich tief zu durchforsten (um eben die jeweilige Kategorie-ID herauszufinden, und dann nachzuschauen "welche Kategorie hat diese ID als ElternID"), werde ich wohl kaum vermeiden können.
Sprich: für 100 Kategorien inkl. der Unterkategorien brauche ich eben 100 Queries.
Was mich aber anzipft: jedesmal, wenn ich in einer Kategorie drin bin, setze ich wieder 3 Queries (Wieviele Links? Wieviele neue Links? Wieviele Updates?).
Kann man das einfacher machen?

Ich hoffe, ich habe das verständlich erklärt...
____________________________________
Viele Grüße

Alex

(SUV-Fahrer aus Leidenschaft)
Alex1 ist offline   Mit Zitat antworten
Alt 12.09.2003, 16:49   #2
käptn
Inventar
 
Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150


Standard

Ein klarer Fall für PEAR:B_NestedSet

http://pear.php.net/package/DB_NestedSet
http://ffm.junetz.de/members/reeg/DS...00000000000000

~
____________________________________
LOL - Mein erstes Post im Programmier Forum

MACINTOSH - Most Applications Crash, If Not The Operating System Hangs
käptn ist offline   Mit Zitat antworten
Alt 12.09.2003, 17:21   #3
Alex1
Alter Sack
 
Benutzerbild von Alex1
 
Registriert seit: 19.09.1999
Ort: An der schönen alten Donau
Alter: 53
Beiträge: 1.579

Mein Computer

Standard

Hm...speziell der zweite Link ist ziemlich interessant.
Ich habe das bis jetzt so gelöst:
Alle Kategorien bekommen eine eigene, eindeutige ID und eine Eltern ID (die ID jener Kategorie, deren Tochter sie sind).
Die Kategorien in der obersten Ebene bekommen als Eltern ID "0".
Ich habe somit ein hierachisches System aufgebaut, wo ich in der obersten Ebene alle Kategorien anzeige, die als Eltern ID "0" haben, und in der nächsttieferen Ebene alle Kategorien, die Tochter dieser Kategorie oberster Ebene ist. Tiefer werden dann die Töchter ebendieser Tochter angezeigt usw.
War das falsch?
____________________________________
Viele Grüße

Alex

(SUV-Fahrer aus Leidenschaft)
Alex1 ist offline   Mit Zitat antworten
Alt 12.09.2003, 17:27   #4
Alex1
Alter Sack
 
Benutzerbild von Alex1
 
Registriert seit: 19.09.1999
Ort: An der schönen alten Donau
Alter: 53
Beiträge: 1.579

Mein Computer

Standard

Hier noch ein Dump der Kategorientabelle
CREATE TABLE category (
category_id smallint(5) NOT NULL auto_increment,
parent_id smallint(5) NOT NULL default '0',
name varchar(100) NOT NULL default '',
description text NOT NULL,
allow_links char(3) NOT NULL default '',
PRIMARY KEY (category_id)
) TYPE=MyISAM;
____________________________________
Viele Grüße

Alex

(SUV-Fahrer aus Leidenschaft)
Alex1 ist offline   Mit Zitat antworten
Alt 12.09.2003, 17:29   #5
käptn
Inventar
 
Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150


Standard

Ja, das klassische Parent-Child System, artet in ein rekursives Desaster aus, wenn die Tiefe der Ebenen zunimmt.

~
____________________________________
LOL - Mein erstes Post im Programmier Forum

MACINTOSH - Most Applications Crash, If Not The Operating System Hangs
käptn ist offline   Mit Zitat antworten
Alt 12.09.2003, 17:34   #6
Alex1
Alter Sack
 
Benutzerbild von Alex1
 
Registriert seit: 19.09.1999
Ort: An der schönen alten Donau
Alter: 53
Beiträge: 1.579

Mein Computer

Standard

Nur, damit ichs im Klartext lese: Das heisst, ich soll das komplette Schema umstellen?
Ich meine, der Jammer ist ja eben der: zuviele Ebenen sind ein Wahnsinn an Queries...ich schick Dir eine schnelle pm mit dem Link...
____________________________________
Viele Grüße

Alex

(SUV-Fahrer aus Leidenschaft)
Alex1 ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:22 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag