Announcement

Collapse
No announcement yet.

Perfomance bei Update

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Perfomance bei Update

    Hallo Forumuser,

    ich habe versuche gerade Daten aus einem Array in eine MySQL Tabelle zu schreiben. So sieht mein Code aus:
    <PRE>
    for j := 1 to 4000 do
    begin
    Query := 'UPDATE artikel_preis SET PREIS = ' + QuotedStr(EKListe[j].EKPreis) +
    ' WHERE BESTNUM = ' + QuotedStr(EKListe[j].BestellNr);
    mysql_query(@mysqlcon, PChar(Query));
    presults := mysql_store_result(@mysqlcon);
    end;
    </PRE>
    Das ganze dauert ca. 20 Minuten, was ich für ein bissel zu viel halte

    Kann man das noch irgendwie optimieren? Ich benutze MySQL.pas um auf den SQL Server zuzugreifen.

    Liebe Grüße

    Mareike

  • #2
    Hallo!<br>
    Ich gehe einfach mal davon aus, dass auf der Tabelle artikel_preis auf dem Feld BESTNUM ein Index vorhanden ist oder?!?<br>
    Ich hab von mySQL keine Ahnung aber 4000 SQL Statements würde ich auf diese Art nicht erzeugen und ausführen...<br>
    Erzeuge auf dem Server eine temporäre Tabelle mit den Spalten Bestnum und Preis<br>
    Kopiere alle 4000 Änderungssätze in diese hineinzu um das Ganze dann mit nur einem Statement upzudaten. Ich weiss allerdings nicht, ob mySQL das kann....<br>
    BYE BERN

    Comment


    • #3
      Wenn ich richtig gerechnet habe macht das 300ms pro Query. Sollte eigentlich schneller gehen, wie bist du denn mit der mySQL verbunden? Wieviele Datensätze hat die Tabelle? Und wie von Bernd schon angesprochen, welche Indizes

      Comment


      • #4
        "Kann man das noch irgendwie optimieren? Ich benutze MySQL.pas um auf den SQL Server zuzugreifen."
        Ja. Felden indexieren

        Comment

        Working...
        X