![]() |
AW: Insert Optimierung
Zitat:
Wie wird dann ein solcher Block in Delphi eingebunden? |
AW: Insert Optimierung
Ist doch praktisch sowas ähliches, wie mehrere Inserts zusammen, nur in einem anonymen Block verpackt.
Von der Größe des SQL-Statements her könntest du ja nochmal Folgendes probieren, mit der nun neu bekannten SQL-Komponente.
Code:
Und wenn die Übertragung der Parameter soviel frißt, bei der Übertagung, dann könnte man ja auch nochmal versuchen keine Parameter zu nutzen.
insert into tbl(id,txt) values (1,'A'), (1,'A'), (1,'A'), (1,'A');
Aber ob sich das wirklich positiv auswirkt, müßte man mal sehn ... schließlich muß man dann die Parameter selber "ordnungsgemäß" behandeln und das SQL-Statement muß jedesmal neu zusammengebaut und vorallem erneut geparst werden. |
AW: Insert Optimierung
Also ich habe große Schwierigkeiten mir 35000 und mehr Insert befehle in einem Block vorzustellen.
Kann mir zum Thema execute Block jemand Einführungsliteratur nennen? |
AW: Insert Optimierung
Ein execute block ist eine SP, die inline deklariert wird. Es ist also SQL/PL möglich. Bei einfachen Inserts sollte aber eine normale parametrisierte Insert-Abfrage ausreichen. Auch hier kannst du die Commits blockweise ausfügren.
|
AW: Insert Optimierung
Zitat:
inline ist ??? SQL/PL heißt ??? Warum müssen die Antworten komplizierter sein als die Fragen, welche man versucht zu stellen. Ich weiß ich bin Anfänger und sollte mich um die Grundlagen selber kümmern. Dennoch, wozu ist das Forum da, wenn es keine Anfänger gäbe, sondern nur Fachleute? |
AW: Insert Optimierung
Hallo,
als Anfänger solltest du ja erst einmal anfangen, statt sich gleich an die Optimierung zu setzen. Was ist an 4 min Laufzeit sooo schlimm, dieses Insert wird doch wohl nicht zu den Haupt-Aufgaben deines Programms gehören. Mach doch erst mal so weiter. Noch was zum Probieren
Delphi-Quellcode:
Was du leider immer noch nicht geschrieben hattest:
procedure TForm1.InputDatasetClick(Sender: TObject);
var i:Integer; startzeit,stopzeit : TDateTime; begin startzeit := now; Screen.Cursor := crHourGlass; ZConnection.Database := 'c:\msql\firedb.fdb'; ZQuery1.SQL.text:='INSERT INTO TestTabelle (Wert1, Wert2) VALUES(:v1, :v2)'; ZQuery1.Prepare; for i:=0 to SG1.RowCount-1 do begin with ZQuery1.params do begin ParamValues['v1']:=SG1.Cells[0, i]; ParamValues['v2']:=SG1.Cells[1, i]; end; // with ZQuery1.ExecSQL; end; // i Screen.Cursor := crDefault; stopzeit := now; Panel1.Caption :='SuchZeit : '+ FormatDateTime('nn:ss:zzz', StopZeit - StartZeit) ; end; Hat deine Tabelle Indizes ? Heiko |
AW: Insert Optimierung
Zitat:
Zitat:
Zitat:
![]() |
AW: Insert Optimierung
@ mkinzler
Danke. @ Hoika Die Tabelle hat weder Indizes noch Trigger. Zu dem Quelltext: ZeosQuery (habe ich gelesen) besitzt die einstellbare Prepare Funktion nicht, da diese Funktion im Quelltext von Zeos bereits fest einprogrammiert ist. Mein erster Schritt: create DB, zweiter Schritt: create tabelle, dritter Schritt: bring meine Daten in die Tabelle(möglichst schnell). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz