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)

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
ConstantGardener

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

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
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
524 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 3. Feb 2022, 08:12
Soetwas ähnliches hatte ich auch mal.
Da hatte ich ein Parameter als falsche Variable übergeben.
Beispiel:
ParamByName( 'Integer' ).AsString := 'Test' Obwohl das Feld in der Datenbank ein Integer war!
Das hat Stunden gedauert.

Also ich bin bei @Jasocul mit dem DateTime Paramter
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.559 Beiträge
 
Delphi 7 Professional
 
#3

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

  Alt 3. Feb 2022, 10:23
Wenn hier
Delphi-Quellcode:
 d.DLGH_PARAMETER_C = :B_Name AND
 d.dlgh_funktion_c = 'SQLSAND
 d.DLGH_START_D > :Datum
einer der Parameter vom Typ nicht mit dem der entsprechenden Spalte in der DB übereinstimmt, wird (wenn Du Pech hast) die entsprechende Spalte der Tabelle für jeden Datensatz in den Typen des Parameters umgewandelt und dann verglichen und nicht einmal der Parameter in den Typ der Spalte und dann verglichen.
Und dann war's das mit der Nutzung des Index und schon wird die Laufzeit (schlimmstenfalls) astronomisch hoch.

Bei der schnelle Variante wird Dir der Zugriffs-Plan vermutlich verraten, welcher Index genutzt wird und bei der langsamen Variante steht da (sinngemäß) was von "full table scan".
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

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

  Alt 3. Feb 2022, 10:42
Ich sehe im SQL keinen DBLink.
Falscher Variabentyp auf Delphiseite könnte schon sein.

DBLinks (bei Oracle) sind ein Thema für sich.
Miserable Geschwindigkeit kann daher rühren, dass der Optimizer sich nicht in der Lage sieht, die Abfrage remote (über Link) zu bewältigen und Daten ungefiltert aus dem DBLink saugt.

Das Verhalten müsste prüfbar sein, wenn man auf Client Code verzichtet und direkt per SQL Client arbeitet.

P.S.: Wie schon angedeutet, ein Paramter in der SQL Abfrage ist etwas anderes als eine Bind Variable in Oracle.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 3. Feb 2022, 10:49
Und schön, wenn immer das Wichtigste fehlt.

Zitat:
Param.AsString := value; //Hier die Wert von Bind Variable setzen
Wie nun?

Und wie sieht die Tabelle aus?
Typen der Felder und welche Indize gibt es.



Jetzt sag bloß, dass du das Datum auch als String übergibts?

Ich denke mal die String-Konstante im SQL kann vor Ausführen in ein DATE konvertiert werden, aber der String-Parameter nicht.
Und dann wird einmal bei der Suche vielleicht ein DATE-Index gesucht,
während beim String das TatumsFeld in einen VARCHAR konvertiert und dann ein FillTableScan gemacht.
Oder wer weiß, weil ist ja alles streng geheim.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18:37 Uhr.
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