AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Insert Optimierung

Ein Thema von Franzelchen · begonnen am 2. Mär 2012 · letzter Beitrag vom 4. Mär 2012
Antwort Antwort
Seite 3 von 4     123 4   
Franzelchen

Registriert seit: 22. Mär 2007
82 Beiträge
 
#21

AW: Insert Optimierung

  Alt 3. Mär 2012, 17:17
Bei Anzahl 30 werden 30 Insertbefehle in einem Rutsch ausgeführt (siehe Fehlermeldung 30x insert). Bei Anzahl 1 demzufolge nur 1 Insert.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.110 Beiträge
 
Delphi 12 Athens
 
#22

AW: Insert Optimierung

  Alt 3. Mär 2012, 17:30
Schon klar.

Ich meinte in Bezug auf das Funktionieren, bzw. die Fehlermeldung.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Franzelchen

Registriert seit: 22. Mär 2007
82 Beiträge
 
#23

AW: Insert Optimierung

  Alt 3. Mär 2012, 17:54
Schon klar.

Ich meinte in Bezug auf das Funktionieren, bzw. die Fehlermeldung.
Ich steh auf dem Schlauch...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.110 Beiträge
 
Delphi 12 Athens
 
#24

AW: Insert Optimierung

  Alt 3. Mär 2012, 17:58
Mit der 30 ist es doch in einer Exception geendet.

Passiert das auch mit einer 1, bei diesem Code?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 3. Mär 2012 um 18:05 Uhr)
  Mit Zitat antworten Zitat
Franzelchen

Registriert seit: 22. Mär 2007
82 Beiträge
 
#25

AW: Insert Optimierung

  Alt 3. Mär 2012, 18:15
bei Anzahl = 1 : keine Fehlermeldung, Die Tabelle wird erstellt.
Schon bei Anzahl = 2 : obige Fehlermeldung (nur stark verkürzt 2 Einträge). Keine Erstellung der Tabelle.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Insert Optimierung

  Alt 3. Mär 2012, 19:03
Ein TZQuery kann aber nur einfache Statements ausführen und kein Skript. Dafür gibt es TZSqlProcessor
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.110 Beiträge
 
Delphi 12 Athens
 
#27

AW: Insert Optimierung

  Alt 3. Mär 2012, 19:20
Ich dachte Firebird kennt die meisten SQL-Features.
Und irgendwie muß man doch mehrere SQL-Befehle zusammen abschicken können?

Eventuell noch INSERT SELECT UNION SELECT ...
http://www.firebirdsql.org/file/docu...ert-from-union
oder eine anonyme Funktion/Block drumrum.

[edit]
Oh, wo kommt denn mkinzler's Antwort her?

Der TZSqlProcessor schickt das zusammen ab, oder zerlegt und versendet er das einzeln?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 3. Mär 2012 um 19:23 Uhr)
  Mit Zitat antworten Zitat
Franzelchen

Registriert seit: 22. Mär 2007
82 Beiträge
 
#28

AW: Insert Optimierung

  Alt 3. Mär 2012, 20:00
Ein TZQuery kann aber nur einfache Statements ausführen und kein Skript. Dafür gibt es TZSqlProcessor
1er Gedanke: Mist
2er Gedanke: gibt's Literatur, Anwendungsbeispiele etc.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Insert Optimierung

  Alt 3. Mär 2012, 20:11
http://zeos.firmos.at/
http://www.delphi-treff.de/tutorials...zsqlprocessor/
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#30

AW: Insert Optimierung

  Alt 4. Mär 2012, 11:15
kleiner Tip:

wenn es wirklich um gleichartige einfache inserts geht, dann sparst du eine Menge zeit über execute block
d.h.statt jedes insert statement mit execute/execsql senden stellt du dir deine inserts in einem Block
zusammen.

Code:
execute block
as
begin
  insert into tbl(id,txt) values (1,'A');
  insert into tbl(id,txt) values (2,'B');
  insert into tbl(id,txt) values (3,'C');
  --...
  insert into tbl(id,txt) values (26,'Z');
end
das kannst du dann mit den meisten t*query oder T*sql Komponenten als ein Befehl
mit execsql zum Server senden. So einen Block kann bis zu 32k lang sein, d.h. es
passen reichlich inserts in einen Befehl.

Über external files zu gehen ist zwar noch schneller, aber setzt voraus, das dein
Firebird Client und der Firebird Server auf einen gemeinsamen Festplattenbereich
zugreifen können, das ist nicht immer gewünscht.

Ab einer gewissen Anzahl parametern ist die Parametrisierung von statements eher langsamer
als schneller, und man sollte wissen, das bei o.a. Verfahren ca. 10 Datenpakete auf TCP/IP
Ebene zwischen Server und Client hin und her geschickt werden, bei 26 Einzelstatements
kommst du parametrisiert auf geschätzt mindestens 200 Datenpakete. Bei jedem Datenpaket
musst du immer die Latenzzeit mit einrechnen (wie lange braucht ein Ping).

Je mehr Records und je mehr Parameter, um so mehr lohnt sich das execute block verfahren!

Execute block ist seit Firebird 2 Standard und hat nichts mit execute ibeblock zu tun, was man
nur in IBExpert Tools nutzen kann.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung

Geändert von IBExpert ( 4. Mär 2012 um 11:19 Uhr)
  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 15:46 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