Viele Auswahfelder in DB schreiben

Suppi

Aktives Mitglied
Hallo

Hätte mal eine Frage, was sonst
tongue.gif


In einem einzigen Formular sind sehr viele Auswahlfelder vorhanden. Wir reden hier von ca. 100 Feldern, es könnten jedoch auch locker 200 und mehr werden. Der Wert der Felder wird natürlich in einer Schleife (PHP) ausgelesen und in die DB gespeichert. Nur bin ich mir nich sicher, welche Methode ich beim updaten verwenden soll. Momentan lösche ich all diese Felder zuerst und schreibe dann alle Werte neu in die DB. Das ist eigentlich am einfachsten.

Nur schellt so die ID (Primärindex) bei jedem absenden des Formulars in die Höhe. Würdet Ihr da so belassen, oder jeden Wert mit dem bereits in der DB gespeicherten Wert vergleichen und dann ein Update machen? Welches ist die schnellere Variante?

Gibts evtl. noch ein 'Trick', um soviele Auswahlfelder auf der Seite schneller zu laden?
smile.gif


Danke und Gruss
Suppi
 
Ich muss gestehen:
Ich verstehe nicht ganz, wieso du vorher erst alle Werte löschst und sie dann neu einträgst.

Wenn es sich beispielsweise um 100 Felder hat, dann löschst du erst 100-mal m dann wieder 100-mal neu einzufügen?
Wieso nicht einfach ein REPLACE?

*edit*
Wie speicherst du die Werte eigentlich in der DB?
Alle in einer Reihe oder bekommt jeder Wert immer wieder eine eigene Reihe?
 
Das war für mich die einfachste Lösung, alles löschen um dann die Änderungen frisch einzutragen
wink.gif
. Bis zu Deiner Antwort kannte ich Replace noch nicht...
sad.gif
Danke connectR, wiedermal was gelernt!

Nur zu meinem Verständnis: Ist es korrekt, dass REPLACE alle Felder mit einem Wert neu in die Datenbank schreibt, egal ob der Datensatz immer noch den selben Wert hat oder nicht?

Jeder Wert eines Auswahlfeldes wird in einem eigenen Datensatz gespeichert, da zum Wert auch das Datum und eine UserID gehört.
 
QUOTE
REPLACE funktioniert auf exakt gleiche Weise wie INSERT. Der Unterschied besteht darin, dass, wenn ein alter Datensatz denselben Wert wie ein neuer Datensatz für einen Primärschlüssel oder einen eindeutigen Index hat, der alte Datensatz gelöscht wird, bevor der neue eingefügt wird.




QUOTE
Wenn Sie eine Anweisung suchen, die [...] entweder einfügt oder aktualisiert, dann benutzen Sie die INSERT ... ON DUPLICATE KEY UPDATE-Anweisung




QUOTE
Beachten Sie, dass, sofern die Tabelle nicht einen Primärschlüssel oder einen eindeutigen Index hat, die Verwendung von REPLACE unsinnig ist.



REPLACE in der MySql-Doku
 
Mal eine Frage zum Verständniss:
Warum replace und nicht update?

Dann "schnellt auch der Primärschlüssel" nicht mehr in die Höhe...

 
Bei hundert Datensätzen würde ich es glaube auch als erstes so machen wie Suppi. Es ist einfach zu programmieren und das Endergebniss ist immerhin das schnellste was möglich ist, sind schließlich nur zwei Queries (DELETE und INSERT) anstatt von 100 UPDATES/REPLACE
 
Zurück
Oben