AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Mehrere Datensätze mit SQL-Befehl Update schneller aktualisieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Datensätze mit SQL-Befehl Update schneller aktualisieren

Ein Thema von ggscholz · begonnen am 27. Dez 2022 · letzter Beitrag vom 17. Jan 2023
Antwort Antwort
Seite 2 von 2     12   
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: Mehrere Datensätze mit SQL-Befehl Update schneller aktualisieren

  Alt 17. Jan 2023, 04:55
Hallo,
wozu dieser Index?
Wenn er nichts nützt, schadet er eher.

Bitte das hier mal sorgfältig durchlesen:
https://dzone.com/articles/improve-m...uery-profiling

Indizes sollen in erster Linie die Reduktion von Daten beschleunigen,
also alles was im "where" steht.
Dazu gehören Felder des Order By eher nicht dazu.

Bitte mal die betreffende Tabelle (Lager) incl. der aktuellen Indizes posten.

Mein "prepare" weiter vorn bezog sich auf Queries.
Bei SPs sollte das schon erledigt sein.
Und Prepare wird vor der Nutzung der Query gemacht,
wenn man sie mehrfach benutzen will.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Mehrere Datensätze mit SQL-Befehl Update schneller aktualisieren

  Alt 17. Jan 2023, 12:33

Delphi-Quellcode:
function StoreInToPlaceUpdate(pStoreId, pBuildingId, pRoomId: Integer; pSize,
      pItemNbr: string; pCategoryNbr, pAssemblyStatus, pStation: Integer; pComment:
      string; pOrderNbr, pSequenceNbr: integer; out oPlace: string): Integer;
var
   sp: TUniStoredProc;
begin
  Result:= 0;
  try
    sp:= TuniStoredProc.Create(nil);
    sp.Connection := fMainForm.coMariaDb;
    sp.StoredProcName := 'StoreInToPlaceUpdate';
    sp.PrepareSQL;
    sp.Params[0].AsInteger:= pStoreId;
    ...
    sp.ExecSQL;
    oPlace:= sp.Params[13].AsString;
    Result :=sp.Params[12].AsInteger
  finally
    FreeAndNil(sp);
  end;
end;
Du rufst StoreInToPlaceUpdate bei 1000 Datensätzen 1000 Mal auf?
Du erzeugst also jedes Mal erst TuniStoredProc, machst jedes Mal ein Prepare etc.

Wenn, dann Erzeugen, Prepare und Freigabe in einer äusseren Procedure, welche die StoreInToPlaceUpdate dann aufruft mit der UniStoredProc als ersten Parameter.
Und TuniStoredProc.Options.AutoPrepare auf False.

Frank
Frank Reim

Geändert von dataspider (18. Jan 2023 um 08:16 Uhr)
  Mit Zitat antworten Zitat
ggscholz

Registriert seit: 20. Nov 2013
Ort: Aachen
64 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Mehrere Datensätze mit SQL-Befehl Update schneller aktualisieren

  Alt 17. Jan 2023, 17:55
Ich lese das gerade, da stimmt was nicht 🧨

Ich habe einen Index erstellt, der WgSize-, Boden-, Korridor- und Ortsdaten enthielt, aber bei Verwendung dieses SP keine Leistungsverbesserung festgestellt.

Ein einfaches Update mit dem gleichen Ergebnis per Batch ist in etwa 200 ms fertig, aber ich habe 33000 ms gebraucht, als ich tausend Änderungen zum Testen gesendet habe (alles unter den gleichen Bedingungen getestet).

Können Sie die Schritte erläutern, die ich ausführen muss, um eine gespeicherte Prozedur zum Ausführen einer Stapelaktualisierung zu verwenden? Wäre das machbar?
Wer schreibt da meinen Text ab? Boden- und Korridor-??? Ohne meine Datenbank zu haben, macht dieser Beitrag nicht viel Sinn.
Gerd
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.452 Beiträge
 
Delphi 12 Athens
 
#14

AW: Mehrere Datensätze mit SQL-Befehl Update schneller aktualisieren

  Alt 17. Jan 2023, 18:03
Nach der Signatur ist das Spam für ein Spiel...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: Mehrere Datensätze mit SQL-Befehl Update schneller aktualisieren

  Alt 17. Jan 2023, 18:41
Hallo,
Einen Index habe ich auf die Felder WgSize,floor,corridor, place gesetzt, wirklich gebracht hat das aber für diese SP nicht wirklich was.

Ein einziger Index für alle 4 Felder?

Gibt es einen Index für StoreId.
Hast Du mal einen Query-Analyzer über das Select laufen lassen?
Werden Indizes verwendet?
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz