![]() |
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:
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...:D |
Ein klarer Fall für PEAR::DB_NestedSet :)
http://pear.php.net/package/DB_NestedSet http://ffm.junetz.de/members/reeg/DS...00000000000000 ~ |
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? :heul: |
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; |
Ja, das klassische Parent-Child System, artet in ein rekursives Desaster aus, wenn die Tiefe der Ebenen zunimmt. :(
~ |
Nur, damit ichs im Klartext lese: Das heisst, ich soll das komplette Schema umstellen? :utoh:
Ich meine, der Jammer ist ja eben der: zuviele Ebenen sind ein Wahnsinn an Queries...ich schick Dir eine schnelle pm mit dem Link... |
Alle Zeitangaben in WEZ +2. Es ist jetzt 00:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag