![]() |
Re: Hilfe bei Optimierung in SQL
Delphi-Quellcode:
for Fld := 0 to q.Fields.Count -1 do // Alle Felder der Tabelle Durcharbeiten
Begin FeldName := q.Fields[Fld].FieldName; if FeldListe <> '' then FeldListe := FeldListe + ','; ... for DS := 1 to 30000 do // Alle Datensätze Duchgehen |
Re: Hilfe bei Optimierung in SQL
Sorry aber das verstehe ich gerade nicht.
Delphi-Quellcode:
// Felder ermitteln //============================== if CheckBox2.Checked then Begin for Fld := 0 to q.Fields.Count -1 do Begin if Fld > 0 then FeldListe := FeldListe + ','; FeldListe := FeldListe + q.Fields[Fld].FieldName; end; end; // End zu if CheckBox2.Checked then // Alle Datensätze durcharbeiten //============================== for DS := 1 to 30000 do Begin if not CheckBox2.Checked then FeldListe := ''; WertListe := ''; INC(GesGearb); for Fld := 0 to q.Fields.Count -1 do Begin FeldName := q.Fields[Fld].FieldName; if not CheckBox2.Checked then if FeldListe <> '' then FeldListe := FeldListe + ','; if WertListe <> '' then WertListe := WertListe + ','; if ((FeldName = 'ZAEHLER') or (FeldName = 'LO')) .... then Wert := IntToStr(DS) |
Re: Hilfe bei Optimierung in SQL
Hi !
ich weiss nicht, ob du a.) direkt SQL-Statements an IB Express absetzen kannst und b.) ob das SQL Query kompatibel ist. Ich würde es in MySQL folgendermassen machen: insert into archivdb.archivtabelle select * from aktuelldb.tabelle [where ....] Danach noch ein entsprechendes delete auf die aktuelldb.tabelle machen (wichtig nur, dass du ein eindeutiges Kriterium für die Übertragung hast, was bis einschließlich des deletes nicht verändert wird -> siehe auch Transaktionssicherheit / Lock Table). Wenn das gehen sollte, wird damit die Schleife komplett gespart und das sollte richtig Schub bringen :-) lg Sebastian |
Re: Hilfe bei Optimierung in SQL
Jup aber das geht erst in FireBird 2.5 soweit ich weis
|
Re: Hilfe bei Optimierung in SQL
Hi !
wäre definitv ein Grund zum Updaten - aber wahrscheinlich gibt es Gründe dagegen !? lg |
Re: Hilfe bei Optimierung in SQL
Nein geht auch schon vorher
|
Re: Hilfe bei Optimierung in SQL
Delphi-Quellcode:
if sender = Button1 then // Wozu? Weg mit der If-Abfrage
Begin IBSQL1.Close; // unnötig IBSQL1.SQL.text := 'Insert into tabelle ('+FeldListe+') values ('+WertListe+')'; IBSQL1.ExecQuery; IBSQL1.Close; // unnötig end; |
Re: Hilfe bei Optimierung in SQL
Ohh ok das wuste ich nicht. Ab welcher FB-Version geht das schon?
|
Re: Hilfe bei Optimierung in SQL
Zitat:
"if sender = Button1 then" ist nur da ich verschiedene Versionen teste also TIBSQL,TIBScript usw. Ich habe es mal in
Delphi-Quellcode:
Geändert : macht ca 0,02Sekunden aus
// if sender = Button1 then
Begin // IBSQL1.Close; IBSQL1.SQL.text := 'Insert into PCBCasioZBPos ('+FeldListe+') values ('+WertListe+')'; IBSQL1.ExecQuery; // IBSQL1.Close; end; |
Re: Hilfe bei Optimierung in SQL
Hi !
Alternativ könnte man noch prüfen, ob die DB a.) Multiple Inserts unterstützt (insert into tabelle (a,b,c) values (1,2,3), (4,5,6) oder b.) Die Keys temporär deaktiveren kann (alter table tabelle disable/enable keys) Ich bin ein wenig "mysql-lastig" :mrgreen: lg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:36 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-2025 by Thomas Breitkreuz