AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Insert optimieren

Ein Thema von PhilmacFLy · begonnen am 16. Sep 2010 · letzter Beitrag vom 16. Sep 2010
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: Insert optimieren

  Alt 16. Sep 2010, 15:18
Leider verstehen nur wenige Datenbanken diese erweiterte Syntax.
Also MS SQL, MySQL und oracle verstehen das - halt mit angepaßter Syntax

In beiden Fällen müssen die Insert-Anweisung ohne Unterstützung durch Parameter erzeugt werden.
Nein, müssen nicht. Auch hier können Parameter verwendet werden. Mann sollte jedoch aufpassen das man die maximale Parameteranzahl der DB nicht überschreitet.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Insert optimieren

  Alt 16. Sep 2010, 15:22
Eine paramterisierte Variante sollte aber der erweiterten Syntax in nichts nachstehen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#13

AW: Insert optimieren

  Alt 16. Sep 2010, 15:28
Naja im moment würde es mir ja schon helfen wenn ich das Problem mit dem token in den Griff bekommen würde
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: Insert optimieren

  Alt 16. Sep 2010, 15:31
Naja im moment würde es mir ja schon helfen wenn ich das Problem mit dem token in den Griff bekommen würde
Schau dir mal das Beispiel genau an.

Dort gibt es 1* die INSERT-Anweisung und x* die Values-Anweisungen.
Du baust jeweils komplett die INSERT + Values zusammen.

Ach ja: Wenn du werte direkt im String verwendest: Quotion nicht vergessen! SQL-Injection lassen grüßen!
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#15

AW: Insert optimieren

  Alt 16. Sep 2010, 15:45
Selbes Problem nur diesmal:

Unkown toke line 3 column 1, VALUES
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: Insert optimieren

  Alt 16. Sep 2010, 15:49
Selbes Problem nur diesmal:

Unkown toke line 3 column 1, VALUES
Selber Tipp: Schau mal ganz genau hin.

Im Beispiel: Wie oft siehst du da das abschließende ";"?
Und wie oft ist es in deinem zusammen gebauten SQL-String?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#17

AW: Insert optimieren

  Alt 16. Sep 2010, 15:53
Im Beispiel von shima is es garnicht drin, und ich habs bei mir im neuen code auch rausgenommen.

Edit:

Delphi-Quellcode:
list.Add('INSERT INTO Messwerte (ID_mess, Millisec, Messwert_Links, Messwert_Rechts)');
      for zt := 0 to round(Frm_Messung.Ch_Messung.BottomAxis.Maximum) do
        begin
          (*Params[0].AsInteger := tId;
          Params[1].AsInteger := zt;
          Params[2].AsFloat := arr_messwerte[tdim, zt, 0];
          Params[3].AsFloat := arr_messwerte[tdim, zt, 1];
          ExecSQL;*)

          List.Add(' VALUES (' + InttoStr(tid) + ', ' + InttoStr(zt) +', ' + FloattoStr(arr_messwerte[tdim, zt, 0]) + ', '+ FloattoStr(arr_messwerte[tdim, zt, 1]) + ' )');
          frm_messung.pb_db.Position := frm_messung.pb_db.Position +1;
        end;
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"

Geändert von PhilmacFLy (16. Sep 2010 um 15:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DelphiBandit
DelphiBandit

Registriert seit: 19. Feb 2007
Ort: In der Lüneburger Heide
165 Beiträge
 
Delphi 10.4 Sydney
 
#18

AW: Insert optimieren

  Alt 16. Sep 2010, 16:04
Habe mir die Beispiele gerade mal angesehen - das dritte und Schnellste wird unter FB nicht funktionieren, da er keine Multi-Valueliste unterstützt
Zitat:
Unfortunately neither SQLServer nor Firebird support multiple rows in the values part of an insert. I know they can use some sort of union clause to do something similar, but performance is not better.So, let’s try with MySql
Und von den beiden davor aufgezählten ist das mit den Parametern (das mittlere) schneller, als wie jetzt mit Einzel-SQL's zu arbeiten.

Hab @work leider keine Zeos installiert, aber müsste man für die Konstrukte mit mehreren SQL-Statements nicht so eine Art Script/Batch-SQL hernehmen?

Zwei Sachen die mir noch einfallen, um es ggf. ein wenig zu beschleunigen
1) Eine Stored-Procedure innerhalb der Datenbank anlegen und deren Parameter füllen und dann diese ausführen. So kann man sich garantiert drauf verlassen, dass die in jedem Fall prepared ist.
2) Externe Text-Tabelle anlegen und die Daten dort hinein inserten, die hält der Server bei 30.000 Werten bestimmt noch im Cache. Anschliessend auf die richtige Tabelle einen einzelnen INSERT mit VALUES (SELECT FROM TextTabelle) absetzen. Wenn man die externe Tabelle dann noch auf eine RAM-Disk legt, kriegt der FB-Prozess mal richtig Last.
Carsten

Geändert von DelphiBandit (16. Sep 2010 um 16:11 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#19

AW: Insert optimieren

  Alt 16. Sep 2010, 17:05
Hallo,

die Sache mit der externen Tabellen wollte ich auch gerade vorschlagen ...

Aber noch mal zum Prepare.
Das macht ZEOS selber (musste mich mal mit den Quellen rumschlagen).


Heiko
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Insert optimieren

  Alt 16. Sep 2010, 17:11
FireBird prepared zudem beim 1. Zugriff auf eine parametrisierte Abfrage
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 17:39 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