![]() |
Datenbank: PostgreSQL • Zugriff über: PostgresDAC
Vorteile von FetchAll beim Filtern?
Hiho!
Hab da eigentlich nur ma ne generelle Anfrage zum Nutzen von FetchAll. So, in der Beschreibung steht ja, dass FetchAll alle Datensätze in den Speicher lädt und an sonsten jedes Mal eine neue Kommunikation mit dem Server statt findet? Wenn ich jetzt also ein TQuery-Objekt habe, was eine große Tabelle lädt, welche ich anschließend filtere (immer nur lesend wohlgemerkt): Würde es mir Geschwindigkeitsmäßig was nutzen, vorher ein FetchAll zu machen, damit das Filtern schneller geht? Danke im voraus cu Patrick |
Re: Vorteile von FetchAll beim Filtern?
Noch besser wäre ein Serverseitiger Filter ( als Where-Clause)
|
Re: Vorteile von FetchAll beim Filtern?
Zitat:
Sprich: WHERE firma=1 and Personal=1 ...firma1 and Personal=2 ...firma=2 and personal=10 etc. pp. Das hatte ich schomma probiert, ist im Endeffekt langsamer, als wenn ich Anfangs alle Firmen lade und dann diese via Filter "durchsuche". Selbst wenn ich je Firma 1 Abfrage erstelle und diese dann via Filter nach Personalnummern suchen lasse, ist das langsamer. (Also als ne Art Mischmodus) Von daher hat bei mir die Erfahrung gezeigt, dass in solchen Fällen das Laden und anschließende Filtern am effektivsten ist. ... Deiner Aussage nach entnehme ich aber, dass ein FetchAll tatsächlich Geschwindigkeitsvorteile gegenüber einem Nicht-Fetch-All bringt, oder? |
Re: Vorteile von FetchAll beim Filtern?
Zitat:
Zitat:
Zitat:
|
Re: Vorteile von FetchAll beim Filtern?
Also bei meinem jetztigen Programm hält sich das in Grenzen von der Datenmenge, da hab ich so zwischen 1.000 und 30.000 Sätze pro Select-Anfrage, welche ausgewertet werden möchte.
In einem Anderen Programm (deswegen frage ich hauptsächlich) kann das aber schomma durchaus in die 50 bis 100.000 oder mehr Sätze Region gehen und da ist das Tempo dann schon ein wichtiges Argument! ... Wie genau muss ich mir das mit den Prepared-Statements denn vorstellen? Das sagt mir jetzt ma so gar nix *schäm* |
Re: Vorteile von FetchAll beim Filtern?
Zitat:
(z.B Sozialkasse mit 80 Mio. Datensätze von Bundesbürgern) Zitat:
Zitat:
|
Re: Vorteile von FetchAll beim Filtern?
Vorbereiten:
Delphi-Quellcode:
...
Query.Sql.Text := 'select ... from ... where firma=:firma and Personal=:personal;';
Query.Prepare; Die eigentlich Abfrage:
Delphi-Quellcode:
Query.ParamByName('firma').Value := 1;
Query.ParamByName('personal').Value := 1; Query.Open; //bzw. Refresh; |
Re: Vorteile von FetchAll beim Filtern?
Ok, probiere ich ma aus mit dem Prepared-Gedöhne.
Wie muss ich mir das denn technisch vorstellen, also was passiert da (so grob). Damit ich zumindest nen Hauch von Hintergrundwissen hab. :D |
Re: Vorteile von FetchAll beim Filtern?
Das Statement wird vom DBMS geparst, ein Zugriffsplan erstellt und dieser je nach DBMS noch optimiert.
Später werden die Parameter auf diesen angewendet |
Re: Vorteile von FetchAll beim Filtern?
Hab jetzt ma nen bissel rumgespielt und festgestellt, dass für meine Bedürfnisse ne Mischung aus beidem am besten funzt.
Also sowohl Filter nutzen als auch die "großen" Abfragen vorher via Prepare vorbereiten. Falls es wen interessiert hier meine Zeitmessungen: Zitat:
Danke für die Hilfe :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:22 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