Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MySQL sau lahm (https://www.delphipraxis.net/30815-mysql-sau-lahm.html)

Robert_G 29. Sep 2004 18:52

Re: MySQL sau lahm
 
Zitat:

Zitat von cheatzs
Delphi-Quellcode:
...
 if SQLConnection.Connected then
  begin
    DateSeparator := '-';
    ShortDateFormat := 'yyyy-mm-dd hh:mm:ss';
    SQLConnection.Query('INSERT INTO '+Table+' (sName, sPath, cLength, wPriority, wState, dtDate, sHash, cLastTimeSend, cDownloaded, wLevel) VALUES ('''+AFile.sName+''', '''+EscapeStr(AFile.sPath)+''', '+inttostr(AFile.cLength)+', '+inttostr(AFile.wPriority)+', '+inttostr(AFile.wState)+', '''+datetostr(AFile.dtDate)+''', '''+AFile.sHash+''', '+inttostr(AFile.cLastTimeSend)+', '+inttostr(AFile.cDownloaded)+ ', '+inttostr(AFile.wLevel)+')',FALSE,fExecuting);
    if Table = conWorkUnitdb then
      SQLConnection.Query('INSERT INTO wr_relation (sWorkUnitHash) VALUES ('''+AFile.sHash+''');',FALSE,fExecuting);
  end;
...

*hüstel*
Dir ist schon klar, dass du der armen DB mit jeder Zeile ein vollkommen neues Statement um die Ohren knallst ?!
Gibt es bei der Klasse TMysqlClient keine Möglichkeit Parameter zu verwenden?
Dadurch würde die DB nur einmal: das Stattment parsen,die Berechtigungen prüfen, und einen Ablaufplan erstellen müssen.
Vor jedem Ausführen übergibst du den Parametern ihre Werte und das war's auch schon.
Was Parameter sind dürfte eine Suche nach [dp:bbf211068b=Parameter AND SQL]Parametern und SQL[/dp:bbf211068b] zeigen. ;)

BTW: Das ist schon ein verdammt hässlicher Code block. ;)

cheatzs 29. Sep 2004 18:57

Re: MySQL sau lahm
 
Nein, kapier ich nicht wirklich.

Mir ist schon klar, dass man Parameter angeben kann (bin mir aber da bei der Komponente MySql-Direct nicht sicher)

Laut meinem Verständnis wird der ganze zugegeben unübersichtliche Code in einen String umgewandelt und dann mit einmal an die Prozedur übergeben.

Also ob Parameter oder nicht, die Daten müssen nun mal eingegeben werden...
Ob man nun den String auseinandernimmt, oder in dem String nach Schlüsselwörtern sucht und diese mit den Parametern erstetzt ist meiner Meinung nach eigentlich egal.

Robert_G 29. Sep 2004 19:19

Re: MySQL sau lahm
 
Zitat:

Zitat von cheatzs
Nein, kapier ich nicht wirklich.

Einfach suchen, hier in Der DP wisrt du schon ein paar Erklärungen finden. ;)

Zitat:

Zitat von cheatzs
Also ob Parameter oder nicht, die Daten müssen nun mal eingegeben werden...
Ob man nun den String auseinandernimmt, oder in dem String nach Schlüsselwörtern sucht und diese mit den Parametern erstetzt ist meiner Meinung nach eigentlich egal.

Eben nicht!
Wenn du Parameter nutzt, erkennt die DB, dass sie das gleiche Statement schon ein paar Augenblicke vorher bekommen hat (Der Text ist ja absolut identisch), die Parameter werden nicht in den Text reingefriemelt sondern getrennt übertragen.

Zitat:

Zitat von cheatzs
Laut meinem Verständnis wird der ganze zugegeben unübersichtliche Code in einen String umgewandelt und dann mit einmal an die Prozedur übergeben.

Genau dieser unübersichtliche und übergroße String soll ja damit verhindert werden. Denk' es dir mal so: Deine arme kleine DB muss den String wieder auseinanderpflücken, Werte & Bezeichner erkennen, prüfen ob der User Insert-Rechte auf die Tabelle hat, einen Ablaufplan erstellen,... (Und das bei _JEDEM_ Aufruf!)
Ich will jetzt keine Predigt halten (wobei es wahrscheinlich schon wieder eine geworden ist :freak: ), aber es sollte IMHO ein Grundsatz sein, der DB soviel unnütze Arbeit wie nur möglich abzunehmen.

cheatzs 29. Sep 2004 19:26

Re: MySQL sau lahm
 
Jetzt hab ichs geschnallt, danke ...
werd mich mal drum kümmern...
klingt auf jeden Fall gut!


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:55 Uhr.
Seite 2 von 2     12   

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