![]() |
Datenbank: MySQL • Version: 5.1 • Zugriff über: MyDac
MySQL schnell UPDATEN!
Hallo an die Datenbankspezies,
ich habe da ein Probelm mit unsere MySQL Datenbank. Es sollen ca. 2.200.000 Datensätze überarbeitet werden und dann mit einem UPDATE neu gesetzt werden. Dieser UPDATE Befehl dauert immer sehr lange. Kann mir einer sagen, wie ich diesen beschleunigen kann? Als Beispiel habe ich aus den 2,2 Mio Sätzen ca 120.000 rausgeholt und will diese UPDATEN. Da sie am Ende der Tabelle sitzen dauer jedes Update sehr lange. Ich würde jetzt lieber die ausgewählten Datensätze sequenziell ab arbeiten und dann auch gleich updaten. Geht dies in MySQL? Es müssen bei jedem Satz 3 Felder neu gesetzt werden. Ich habe es schon mit einem INDEX auf die 4 Felder der WHERE Abfrage gemacht aber es dauert einfach sehr lange. Für einen kleine Tip oder einer Hilfe schon mal jetzt meinen Dank! |
Re: MySQL schnell UPDATEN!
Die üblichen Beschleunigungsmöglichkeiten verwenden:
Prepared Statements oder gleich eine Stored Procedure. |
Re: MySQL schnell UPDATEN!
Zitat:
Zitat:
![]() Zitat:
|
Re: MySQL schnell UPDATEN!
Was heißt hier eigentlich "extrem lange"?
Bei 2.200.000 nötigen Änderungen und 10 Änderungen pro Millisekunde, dann ergibt das immerhin über 3,5 Minuten. |
Re: MySQL schnell UPDATEN!
Hallo,
zeig doch mal ein bisschen Code. Wie genau machst du das Update ? Werden Transaktionen benutzt ? Welche DB-Engine benutzt ihr (InnoDB ... )? Heiko |
Re: MySQL schnell UPDATEN!
Danke erst Mal für die Antworten!
Der Ablauf sieht wie folgt aus: Mit SELECT alle Daten aus Tabelle 1 einlesen. WHILE not EOF do Daten in Tabelle 2 suchen wenn gefunden dann Daten in Tabllle 3 suchen sonnst in Tabelle 4 Daten mit UPDATE wieder auf neuen Stand bringen Nächsten Datensatz holen END Ich habe eine Indize mit den 4 Suchfeldern auf Tabelle 1. Ein Datensatz benötigt in obigen Durchlauf ca. 30 sekunden, was einfach nicht sein kann. |
Re: MySQL schnell UPDATEN!
Welche Tabelle enthält denn welche Daten ?
Sind alle mit 2.2 Mio Datensätzen Gibt es einen Primärschlüssel in der Tabelle fürs Update? auf welche der 4 Tabellen geht das Update? Wie sieht es mit einem JOIN von Tabelle 1 und 2 aus ? Ein bisschen mehr Info wäre hilfreich. |
Re: MySQL schnell UPDATEN!
OK Danke!
In Tabelle 1 sind 2.2 Mio. Datensätze In Tabelle 2, Tabelle 3 und Tabelle 4 núr ca. 5400 Datensätze. Das Update geht wieder auf Tabelle 1 Es gibt keien JOIN zwischen Tabelle 1 und Tabelle 2. Da es sein kann, dass in Tabelle 2 keine Daten vorhanden sind, was zu einem Fixwert und der Suche in Tabelle 4 führt. |
Re: MySQL schnell UPDATEN!
Wenn ich das richtig verstanden habe, holst Du Dir alle Daten auf den Client, verarbeitest die Datensätze einzeln und schickst dann je DS ein Update zum Server zurück. Da denke ich, hat Bernhard Recht, eine SP sollte da um einiges performanter sein.
|
Re: MySQL schnell UPDATEN!
Ohne Code und Tabellenstruktur ist es schwierig einen vernünftigen Tipp zu geben.
Wie sieht z.B. Dein SELECT aus und Dein Index? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz