Veröffentlicht 21. April 201015 j Hi, ich hab ne Frage, ob SQL meine Bedürfnisse so befriedigen kann, wie ich es mir vorstelle! Ich mache eine Bestandsbereinigung und dazu automatisiert SQL-Update-Statements erzeugt, die von unseren Datenbankern ausgeführt werden. Nur ist das ganze wg. folgender Problematik ultra-fail-langsam; UPDATE tabelle SET spalte = 'wert_neu1' where spalte = 'wert_alt1'; UPDATE tabelle SET spalte = 'wert_neu2' where spalte = 'wert_alt2'; ... .. . Sieht richtig billig aus, nur hat die Tabelle mehrere millionen Zeilen und es sind update-statements im 3-stelligen Anzahlen-Bereich. Für ein Update brauch er mehrere Minuten, das multipliziert sich natürlich. Ich hatte jetzt überlegt, dass es cool wäre, wenn SQL so etwas in der Art könnte; UPDATE tabelle SET spalte = 'wert_neu1' where spalte = 'wert_alt1' OR spalte = 'wert_neu2' where spalte = 'wert_alt2'; Also, dass er nur 1x über den gesamten Bestand gejagt wird. Gibts sowas? BTW: is ne 10'er Oracle DB.
21. April 201015 j Hi, Also, dass er nur 1x über den gesamten Bestand gejagt wird. Gibts sowas? BTW: is ne 10'er Oracle DB. Die Frage wäre vielmehr, warum ein einzelner Update so langsam ist. Wird pro Update nur jeweils 1 Row geändert ? Liegt auf der zu Updaten Spalte ein Index ? Gruss
21. April 201015 j warum ein einzelner Update so langsam ist. Ich führe das auf die schiere Menge der DB-Sätze zurück... Wird pro Update nur jeweils 1 Row geändert ? Unterschiedlich - mal gar keine, mal mehrere Tausend. Liegt auf der zu Updaten Spalte ein Index ? Leider nicht, die Ecke der Datenbank wird nicht so oft durchwühlt. Die zu ändernden Spalten sind auch normalerweise nicht in Abfragen einbezogen
21. April 201015 j Leider nicht, die Ecke der Datenbank wird nicht so oft durchwühlt. Die zu ändernden Spalten sind auch normalerweise nicht in Abfragen einbezogen Dann würde ein Index auf dies Spalte + Genererieren der Statistiken helfen, denke ich Gruss
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.