AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken FireDAC: Möglichkeit die Abfrage schneller zu machen? ( in Delphi)
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Nikolozi · begonnen am 2. Feb 2022 · letzter Beitrag vom 3. Feb 2022
Antwort Antwort
Nikolozi

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

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

  Alt 2. Feb 2022, 13: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
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.855 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 2. Feb 2022, 21:41
Das muss schneller gehen. Da gibt's doch auch was mit Prepare.
Das reicht normalerweise einmal auszuführen.
Hast du die Möglichkeit den Zugriffs-Plan der DB in beiden Fällen zu vergleichen?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.048 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 2. Feb 2022, 23:25
Delphi Code bereinigt:
Und jetzt nochmal nicht ganz so bereinigt - aber wirklich echter Code!
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.341 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 3. Feb 2022, 06:11
Bitte ohne "with". Du tust dir keinen gefallen damit.
Ich hoffe, den zweiten Parameter übergibst du als "AsDateTime".

Benutzt du für den DBLink einen ODBC-Treiber oder arbeitest du native?
Ich habe schonmal gelesen, dass manche ODBC-Treiber mit parametrisierten SQL-Anweisungen Probleme haben.
Peter
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.303 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 3. Feb 2022, 06:38
Moin...
Zitat:
Ich verwende Bind Variablen in Delphi
Begriffsdefinion: meinst du damit Parameter?
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.179 Beiträge
 
Delphi 11 Alexandria
 
#6

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

  Alt 3. Feb 2022, 06:56
Wie viele Datensätze sind in der Tabelle?
  Mit Zitat antworten Zitat
ConstantGardener

Registriert seit: 24. Jan 2006
Ort: Halberstadt
376 Beiträge
 
Delphi 10.4 Sydney
 
#7

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

  Alt 3. Feb 2022, 06:59
https://en.delphipraxis.net/topic/62...#comment-54473

...schau dir das mal an. Dmitry muss es wissen!
Andreas Schachtner
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:53 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