MySQL - Schneller insert aber lames update
-
HI,
ich hatte mit einem cpp programm eine mysql datenbank mit 300k datensätzen gefüllt. dies lief recht zügig. nach 3h stunden waren die daten in der db. es musste nebenbei noch infos berechnet werden.
nun ich 20k update aus, nach dem motto
update table set spaltex = wert1 where spaltey = wert2
also nur eine einzige Bedinung. Allerdings dauert es jetzt im Schnitt 1,2 sekunden pro datensatz.
Kann es an der größe der Datenbank liegen das die updates entsprechend mehr zeit benötigen, oder woran kann es noch liegen?
SO schaut mein BCB Quellcode aus
bool __fastcall PlayIntoDB() { String sql = "update products set text = '" + beschreibung->Text + "' where id = '" + id + "'"; try { SQLQuery->Close(); SQLQuery->SQL->Clear(); SQLQuery->SQL->Add(sql); SQLQuery->ExecSQL(); Memo1->Lines->Add("ok"); return true; } catch(...) { Memo1->Lines->Add("not okay"); Memo1->Lines->Add(sql); Memo1->Lines->Add(""); return false; } }
Eigentlich sollte das okay sein, in einer Schleife wird die Funktion aufgerufen. Die Variablen stehen dann immer mit dem Inhalt zur Verfügung. Nur alles halt derbe langsam.
Ist das normal?
Jochen
-
Ich weiss ja nicht was du für Datensätze da reinprügelst, aber 3 Stunden für 300.000 Rows ist auch schon ein bissel lang
An sonsten würde ich sagen, das du vielleicht ein Paar Indizes anlegen solltest
-
ja, so lange weil noch viele dinge berechnet werden musste, sehr viel sogar