AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Hilfe bei Optimierung in SQL

Hilfe bei Optimierung in SQL

Ein Thema von Pro_RJ · begonnen am 9. Okt 2008 · letzter Beitrag vom 13. Okt 2008
Antwort Antwort
Seite 2 von 4     12 34   
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.850 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Hilfe bei Optimierung in SQL

  Alt 9. Okt 2008, 23:05
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
Markus Kinzler
  Mit Zitat antworten Zitat
Pro_RJ

Registriert seit: 16. Apr 2008
146 Beiträge
 
#12

Re: Hilfe bei Optimierung in SQL

  Alt 9. Okt 2008, 23:08
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)
  Mit Zitat antworten Zitat
slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#13

Re: Hilfe bei Optimierung in SQL

  Alt 9. Okt 2008, 23:08
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
  Mit Zitat antworten Zitat
Pro_RJ

Registriert seit: 16. Apr 2008
146 Beiträge
 
#14

Re: Hilfe bei Optimierung in SQL

  Alt 9. Okt 2008, 23:10
Jup aber das geht erst in FireBird 2.5 soweit ich weis
  Mit Zitat antworten Zitat
slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#15

Re: Hilfe bei Optimierung in SQL

  Alt 9. Okt 2008, 23:11
Hi !

wäre definitv ein Grund zum Updaten - aber wahrscheinlich gibt es Gründe dagegen !?

lg
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.850 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Hilfe bei Optimierung in SQL

  Alt 9. Okt 2008, 23:12
Nein geht auch schon vorher
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#17

Re: Hilfe bei Optimierung in SQL

  Alt 9. Okt 2008, 23:13
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;
  Mit Zitat antworten Zitat
Pro_RJ

Registriert seit: 16. Apr 2008
146 Beiträge
 
#18

Re: Hilfe bei Optimierung in SQL

  Alt 9. Okt 2008, 23:13
Ohh ok das wuste ich nicht. Ab welcher FB-Version geht das schon?
  Mit Zitat antworten Zitat
Pro_RJ

Registriert seit: 16. Apr 2008
146 Beiträge
 
#19

Re: Hilfe bei Optimierung in SQL

  Alt 9. Okt 2008, 23:17
Zitat von sx2008:
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;
Das
"if sender = Button1 then" ist nur da ich verschiedene Versionen teste also TIBSQL,TIBScript usw.

Ich habe es mal in

Delphi-Quellcode:
// if sender = Button1 then
      Begin
// IBSQL1.Close;
        IBSQL1.SQL.text := 'Insert into PCBCasioZBPos ('+FeldListe+') values ('+WertListe+')';
        IBSQL1.ExecQuery;
// IBSQL1.Close;
      end;
Geändert : macht ca 0,02Sekunden aus
  Mit Zitat antworten Zitat
slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#20

Re: Hilfe bei Optimierung in SQL

  Alt 9. Okt 2008, 23:19
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"

lg
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18:45 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