Einzelnen Beitrag anzeigen

Nikolozi

Registriert seit: 1. Dez 2020
1 Beiträge
 
#1

FireDAC: Möglichkeit die Abfrage schneller zu machen? ( in Delphi)

  Alt 2. Feb 2022, 14:23
Datenbank: Oracle • Version: 19c Enterprise • Zugriff über: FireDAC
Hallo ,

ich habe so ein interessantes Problem. Ich verwende Bind Variablen in Delphi und auf Datanbankseite wird Database Link (@dblink) verwendet um aus einer Tabelle Daten geholt zu werden. Wenn ich SQL SELECT-Abfrage so schicke , es ist schnell :

Code:
 
SELECT
 DLGH_START_D Datum,
 TRUNC((d.DLGH_ENDE_D - d.DLGH_START_D) * 24 * 60)||' Min '||
 TRUNC(MOD(((d.DLGH_ENDE_D - d.DLGH_START_D) * 24 * 3600), 60))||' Sek' Dauer
FROM
  dialoghistory d
WHERE
 d.DLGH_PARAMETER_C = 'Name of Parameter' AND <--
 d.dlgh_funktion_c = 'SQLS' AND
 d.DLGH_START_D > '01.02.2020' <--
order by 1
aber diese SQL Abfrage mit Bind Variablen dauert ewig:

Code:
SELECT
 DLGH_START_D Datum,
 TRUNC((d.DLGH_ENDE_D - d.DLGH_START_D) * 24 * 60)||' Min '||
 TRUNC(MOD(((d.DLGH_ENDE_D - d.DLGH_START_D) * 24 * 3600), 60))||' Sek' Dauer
FROM
  dialoghistory d
WHERE
 d.DLGH_PARAMETER_C = :B_Name AND <--
 d.dlgh_funktion_c = 'SQLS' AND
 d.DLGH_START_D > :Datum   <--
order by 1
Delphi Code bereinigt:

Code:
qry := TFDQuery.CreateSQL(Application, sSqlText_.Text);
    with qry do begin
    ...
     Param.AsString := value; //Hier die Wert von Bind Variable setzen
    ...
    Open; //Hier wird lange hängen geblieben ~ 1 Stunde . ohne Bind Variablen 1 Sekunde
Es liegt vermutlich an dblink, aber genau was das ist und wie ich es umgehen kann, keine Idee
Nika
  Mit Zitat antworten Zitat