MatMagic
Erfahrenes Mitglied
Hallo Community,
nach langer Zeit habe ich (endlich) mal wieder eine Frage an euch.
Ich habe in einer Tabelle die Felder:
a, b, feld, herzog, punkte
Die Positionen "a" und "b" sind Standorte auf einer Karte von 850x850 also gibt es 722500 Einträge. Aktualisierte Einträge sind immer ca. 40000 - 50000.
Ich möchte nun in den Feldern: "feld, herzog, punkte" eine aktualisierung vornehmen die den enstprechenden "a" und "b" Positionen entsprechen.
Sämtliche geänderten Informationen (a, b, feld, herzog, punkte) stehen in einer Textdatei zur Verfügung. Diese Textdatei werte ich aus und trage die Änderungen in die Tabelle ein. Aber das dauert tierisch lange.....habt ih eine Idee wie ich das schneller hinbekomme?
1.Code
Das war seeeeehr langsam jeder Eintrag hat ca. 6 Sekunden gedauert was bei 40.000 Änderungen ca. 67 Stunden entsprechen würde. Deswegen habe ich in die Tabelle das Feld "ab" hinzugefuegt in dem nun die Werte "a" und "b" so drinstehen "a_b" und somit das updaten von 2 Bedingungen auf 1 Bedingung reduziert.
2.Code
Das hat leider nicht viel gebracht....ein Eintrag dauert nun ca. 4 .5 Sekunden was bei 40000 Änderungen immer noch satte 50 Stunden sind. Ich gehe mal davon aus das ich etwas grundlegendes falsch mache. Leider weiss ich nicht was. Google oder die Forensuche haben mir bisher leider keinen Erfolg beschert.
An der Auswertung der Textdatei kann es eigentlich nicht liegen, da die Auswertung (ohne die DB Eintragung) - nur Darstellung auf dem Bildschirm für alle 722500 Einträge insgesamt nur ca. 60 Sekunden dauert.
Habt ihr eine Idee warum das so lange dauert? Geht es überhaupt schneller?
Gruß
Mat
nach langer Zeit habe ich (endlich) mal wieder eine Frage an euch.
Ich habe in einer Tabelle die Felder:
a, b, feld, herzog, punkte
Die Positionen "a" und "b" sind Standorte auf einer Karte von 850x850 also gibt es 722500 Einträge. Aktualisierte Einträge sind immer ca. 40000 - 50000.
Ich möchte nun in den Feldern: "feld, herzog, punkte" eine aktualisierung vornehmen die den enstprechenden "a" und "b" Positionen entsprechen.
Sämtliche geänderten Informationen (a, b, feld, herzog, punkte) stehen in einer Textdatei zur Verfügung. Diese Textdatei werte ich aus und trage die Änderungen in die Tabelle ein. Aber das dauert tierisch lange.....habt ih eine Idee wie ich das schneller hinbekomme?
1.Code
Code:
<?php
include '../logindb.php';
$connectionid = mysql_connect($l1,$l2,$l3);
if (!mysql_select_db ($l4, $connectionid))
{
die ("Keine Verbindung zur Datenbank");
}
$datei = "quelle.txt";
$lines = file($datei);
foreach ($lines as $line)
{
$zeile = explode('%|', trim($line));
$a = $zeile[0];
$b = $zeile[1];
$feld = $zeile[2];
$herzog = $zeile[3];
$punkte = $zeile[4];
// Einträge Update
$sql = "UPDATE `force_entry` SET ".
"`feld` = '$feld, ".
"`herzog` = '$herzog, ".
"`punkte` = '$punkte".
"WHERE `a` = '$a' and `b` = '$b'";
// SQL Befehl ausführen
mysql_query ($sql);
}
?>
Das war seeeeehr langsam jeder Eintrag hat ca. 6 Sekunden gedauert was bei 40.000 Änderungen ca. 67 Stunden entsprechen würde. Deswegen habe ich in die Tabelle das Feld "ab" hinzugefuegt in dem nun die Werte "a" und "b" so drinstehen "a_b" und somit das updaten von 2 Bedingungen auf 1 Bedingung reduziert.
2.Code
Code:
<?php
include '../logindb.php';
$connectionid = mysql_connect($l1,$l2,$l3);
if (!mysql_select_db ($l4, $connectionid))
{
die ("Keine Verbindung zur Datenbank");
}
$datei = "quelle.txt";
$lines = file($datei);
foreach ($lines as $line)
{
$zeile = explode('%|', trim($line));
$ab = $zeile[0]."_".$zeile[1];
$feld = $zeile[2];
$herzog= $zeile[3];
$punkte = $zeile[4];
// Einträge Update
$sql = "UPDATE `force_entry` SET ".
"`feld` = '$feld, ".
"`herzog` = '$herzog, ".
"`punkte` = '$punkte".
"WHERE `ab` = '$ab'";
// SQL Befehl ausführen
mysql_query ($sql);
}
?>
Das hat leider nicht viel gebracht....ein Eintrag dauert nun ca. 4 .5 Sekunden was bei 40000 Änderungen immer noch satte 50 Stunden sind. Ich gehe mal davon aus das ich etwas grundlegendes falsch mache. Leider weiss ich nicht was. Google oder die Forensuche haben mir bisher leider keinen Erfolg beschert.
An der Auswertung der Textdatei kann es eigentlich nicht liegen, da die Auswertung (ohne die DB Eintragung) - nur Darstellung auf dem Bildschirm für alle 722500 Einträge insgesamt nur ca. 60 Sekunden dauert.
Habt ihr eine Idee warum das so lange dauert? Geht es überhaupt schneller?
Gruß
Mat
Zuletzt bearbeitet: