![]() |
|
|
#1 |
|
Moderator
Registrierungsdatum: 04.2003
Beiträge: 924
|
Hi Folkz,
ich bin mal wieder am arbeiten und bin grade dabei eine optimale Lösung zu finden. Ich habe eine Tabelle die mehrfach durchsucht werden soll und nun frage ich mich ob es besser ist, die Datenbank in einem Array zu speichern. Ich habe eine Tabelle in der Datenbank: ID | Name | Link | Link 2 | Link 3 Ich muss diese Tabelle ca. 3-4 mal durchsuchen um ein Ergebnis zu erhalten. Da Frage ich mich, ob ich 4 Anfragen mit SELECT stellen soll oder in einer ersten Anfrage den Inhalt der benötigten Spalten in einem Array kopieren sollte. Dann kann ich das Array die 3-4 mal durchsuchen. Was macht also am meisten Sinn? mfg ~ phos4 |
|
|
|
|
|
#2 |
|
Loginclub User
Registrierungsdatum: 05.2004
Ort: München
Beiträge: 662
|
Das kommt ganz auf die Anfragen an. Wenn Sie schön mit Indices umsetzbar sind und eine relativ kleine Teilmenge liefern, definitiv die Datenbank. Wenn alle Anfragen eine eher große Teilmenge liefern und eine komplexe Bedingung haben, kann das Array durchaus Sinn machen.
|
|
|
|
|
|
#3 |
|
Moderator
Registrierungsdatum: 04.2003
Beiträge: 924
|
Hoi,
ich denke das sich die Anzahl der Datensätze stark in Grenzen halten wird. Die Tabelle soll max. 65535 Eintraege fassen. Ich denke das jedoch nicht mehr wie max 20 vorhanden sein werden. Auch sind es nur 5 Spalten, wovon 2 Booleans sind. Der Rest wird nen unsigned Integer sein. Die Sache ist, das ich mehrfach die Tabelle abfragen muss. Zum Beispiel: - Wenn das erste Ergebnis Level 5 ist -> Jetzt muss noch Level 0 - 4 abgefragt werden mit den entsprechenden Default-Werten mfg ~ phos4 |
|
|
|
|
|
#4 |
|
Super Moderator
Registrierungsdatum: 04.2003
Beiträge: 2.173
|
Falls dein Code nur in dieser speziellen Situation gebraucht wird und nicht an anderer Stelle eingesetzt werden soll, würde ich die Geschwindigkeit einfach bei beiden Methoden messen. Das ist wohl die einfachste Möglichkeit die Lösung zu finden.
__________________
http://blog.cybergesellschaft.de/ |
|
|
|
|
|
#5 |
|
Moderator
Registrierungsdatum: 04.2003
Beiträge: 924
|
Hoi,
um eventuell etwas Licht ins Dunkel zu bringen, werde ich mal etwas genau auf die Aufgabe des Codes eingehen. Das ganze wird ein Menü, welches beliebig viele Untermenüs enthalten kann. Die Tabelle: [ID] -> Eindeutige ID des Menü-Eintrags [Level] -> Level gibt an, welche Ebene sich der Menü-Eintrag befindet [ParentID] -> Die ID des übergeordneten Menü-Elements [Name] -> Name der für den Link im Menü genutzt wird PHP-Code:
Es wird also nur an einer Stelle wirklich gebraucht. Da ich jedoch die Anzahl der Untermenüs nicht wirklich begrenzen möchte, kann es passieren immer mehr Anfragen an die Datenbank gesendet werden. Beispiel: Bei meinem Gedanken, wäre in der Datenbank durchsucht worden bis die ID gefunden wurde. Hat die ID eine ParentID muss auch dieses ermittelt werden. Also noch eine Anfrage. Bei einer Menütiefe von 10 wären es 10 Anfragen an die Datenbank. Deswegen die Frage ob es Sinn macht, alle Daten in ein Array zu kopieren und dann aus dem Speicher 10 mal abzufragen. Eventuell ist es ja jetzt klar, was mein Problem aktuell ist. mfg ~ phos4 |
|
|
|