Hallo,
ich hab ein kleines Problem mit der
ADO SQL Insert Geschwindigkeit.
Ich habe eine Datensatz der ca. 800.000 Daten beinhaltet dieser wird via Delphi aufgearbeitet und ist in einer TObjectList<TData>.
Bisher hatte ich für
SQL Inserts immer eine Stored Procedure via TAdoStoredProc realisiert, aber bei dieser Datenmasse ist das zu langsam.
Wenn ein Neuer Datensatz da ist werden die besehenden Daten aus der Tabelle erst gelöscht und dann die neuen Daten befüllt.
Die Datenstruktur:
Delphi-Quellcode:
TData = class
FID: string;
FText: String;
FOrt: string;
FValue: Extended;
Die Tabelle sieht so aus:
Code:
ID nvarchar(12)
Text nvarchar(255)
Ort nvarchar(10)
Value float
Mein Insert bisher (in der SP ist nur der eigentlicher Insert drin).
Delphi-Quellcode:
For Data in ObjList do
begin
ADOSP_T_SP.Active := false;
ADOSP_T_SP.Parameters.ParamByName('@ID').Value := Data.FID;
ADOSP_T_SP.Parameters.ParamByName('@Text').Value := Data.FText;
ADOSP_T_SP.Parameters.ParamByName('@Ort').Value := Data.FOrt;
ADOSP_T_SP.Parameters.ParamByName('@Value').Value := Data.FValue;
ADOSP_T_SP.Active := true;
end;
welche Möglichkeiten gib es sonst noch? TAdoTable, TAdoCommand....
was eignet sich am besten bei so einer Datenmenge?
Edit: Server ist ein
MSSQL 2017 v14.0