Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: Brauch ich Delphi Enterprise?

  Alt 29. Dez 2020, 12:00
Was sind Multi-Row-Inserts?
Code:
INSERT INTO mytable (col_a, col_b) VALUES (1, 2), (2, 2), (3, 1);
Mysql und MariaDB können das, Firebird nicht. Da musst du sowas machen:
Code:
SET TERM #;
EXECUTE BLOCK (...)
AS BEGIN
  INSERT INTO mytable (col_a, col_b) VALUES (1, 2);
  INSERT INTO mytable (col_a, col_b) VALUES (2, 2);
  INSERT INTO mytable (col_a, col_b) VALUES (3, 1);
END
#
SET TERM ;#
Unnötig zu sagen, dass das eine Menge Overhead ist. Vorallem bei der im Vergleich sehr bescheidenen Blockgröße. Bei MariaDB kann ich locker 100.000 Zeilen nach obiger Methode in einem Rutsch einfügen. Bei Firebird dürften es irgendwo zwischen 100 und 500 sein.

Weil Array-DML kann Firebird mit FireDAC.
Mag sein, dass man da clientseitig sowas machen kann (ich nutze kein FireDAC) aber letztendlich muss es doch wieder in einen Dialekt übersetzt werden, den der FB-Server versteht. Das heißt, dass das auch noch intern auseinander gepflückt und neu zusammengesetzt werden muss. Am Ende hast du ja doch wieder das Query-Pingpong, das netzwerklastig ist (wir haben es in der Praxis häufig mit sehr schlechten Netzwerken zu tun, manchmal steinalte 11b-WLANs am Rande der Reichweiten-Kotzgrenze)
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter (29. Dez 2020 um 12:32 Uhr)
  Mit Zitat antworten Zitat