Einzelnen Beitrag anzeigen

Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#48

Re: Schnellste Insert Möglichkeit für eine DB?

  Alt 9. Mär 2010, 13:46
@Sharky
Ich denke jetzt wieder

@xZise
jetzt hast Du die Chance über die Parameter Geschwindigkeit zu machen z.b. so:
Delphi-Quellcode:
  q.sqltext:='INSERT INTO Personen(Name,Vorname,HauptKursID,Obsolet) VALUES (:AName, :AVorname , 0, 0);
for i:=0 to liste.count-1 do begin
q.parambyname(
'Aname').asstring:=liste[i].Name;
q.parambyname(
'Avorname').asstring:=liste[i].Vorname;
q.sqlexec;
end;
So sollte es im Prinzip ablaufen. Der Einfacheit halber ist bei mir Liste keine Stringliste, aber ich denke das Prinzip ist klar.

SQL-Code:
DELETE FROM Kurszuweisungen WHERE PersonenID = ASchuelerID AND KursID = AKursID
UPDATE Personen SET HauptKursID = AKursID WHERE PersonenID = APersonenID
INSERT INTO Kurszuweisungen (PersonenID, KursID) VALUES (ASchuelerID, AKursID)
auch hier solltest Du (wenn möglich!) erst alle DELETE-Anweisungen, dann die UPDATEs und dann die INSERTs ausführen lassen.
Natürlich unter Ausnutzung der Parameter.
was die Transaktion angeht, würde ich jede for i:=.Schleife in eine Transaktion packen, aber das ist eine reine Bauchempfehlung.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat