![]() |
Datenbank: FB • Version: 1.5 • Zugriff über: bde
SP's <> prepared queries
Hallo #,
ich benutze meistens prepared queries, wenn Daten über eine Schleife ausgelesen werden. Vorteil: Das Statement kann dynamisch zusammengebaut werden. Jetzt habe ich mal eine der am meistens verwendeten Queries in eine SP umgeschrieben. OHA ! Das war etwa 1/3 schneller! Wie kann das sein ? Ich übergebe 2 Integer-Parameter und bekomme ein paar floats (double precision) zurück. Durch das prepare wird auf der Server-Seite der Query-Plan gemerkt. Warum ist die SP um so viel schneller. Danke im voraus Heiko |
Re: SP's <> prepared queries
Bekommst Du ein Recordset von deiner SP zurück?
Falls nein, so hast Du den unterschied. Der zusammenbau eines Recordset kostet auch zeit. Fast-Off-Topic: Du nimmst immer noch BDE? Nicht schon mal native Zugriffskomponenten probiert. Du weist ja: BDE ... |
Re: SP's <> prepared queries
Hallo Bernhard,
auch die SP liefert mir ein Recordset. OK, das wird zeilenweise ausgeliefert und nicht im Server gespeichert. Mich hat nur der enorme Geschwindigkeitsunterschied gewundert. Zur BDE. jaja :) ;( Ich habe hier eine Anwendung mit ~ 500k DB-Code. Ist ursprünglich mit Paradox entwickelt. In vielen Forms befinden sich also noch TTables ...;( Ich versuche ja, davon wegzukommen, aber das wird wohl noch ein bissel dauern. Vista kann ja noch bde. Was empfielst du denn für Firebird ? Heiko |
Re: SP's <> prepared queries
Zitat:
Zitat:
Zitat:
|
Re: SP's <> prepared queries
Hallo Heiko,
für einen schnellen und einfachen Umstieg kann ich die ![]() Ansonsten sind die ![]() Mein persönlicher Rat: Finger weg von IBX Gruß onlinekater [Edit]man wadd Dreckfuhler [/Edit] |
Re: SP's <> prepared queries
Hallo,
ibx ist schon klar (wegen der Aussage von Jeff Overcash, keine FB-spezifischen Sachen zu unterstützen). Bei ZEOS hört man immer mal von Problemen. IBObjects ist Löhn-Ware .. Ich bin ja arm ..;( Was ist mit UIB ? Benutzt das jemand ? Zum Umstieg. Ich habe schon angefangen, eine eigene Query-Komponente zu schreiben. Zur Zeit ist sie noch direkt von der BDE-Query abgeleitet. Das wird insofern geändert, dass ich ne abstrakte Query habe und alle Queries (BDE, ZEOS) müssen halt alles definieren (SQL, Open usw.) Mein Problem ist, dass in der BDE ja noch viel mehr vorgeht (Database, Transaktionen). Das muss ich auch implementieren. Ziel ist, dass ich mehrere Datenbanken unterstützen kann (Oracle und MS-SQL2005). Heiko |
Re: SP's <> prepared queries
Zitat:
--> Achso, Dein Ziel ist es, eine eigene Komponente zu schreiben, die das alles kann? pfff viel viel Arbeit, da Zeos opensource ist, würde ich da mal spicken ... Über die Probleme von Zeos kann ich selbst nichts sagen, ich arbeite hauptsächlich mit den IBObjects (noch). Gruß onlinekater PS: Zur Handhabung der ZEOS-Kompos: ![]() |
Re: SP's <> prepared queries
Zitat:
WEnn Du wirklich mehrerr DB's unterstützen mußt, so empfehle ich dir eine Kapslung z.B. mit dem ![]() Damit ist dir auch egal mit was für Komponenten du auf die DB's zugreifst. Sei es nun ZEOS für alle oder für jede DB eine andere. Vorteil ZEOS: - Exe kleiner - Nur in eine Komponente einarbeiten nötig Nachteile ZEOS: - U.U. Nicht maximale Performance möglich - DB-Spezialitäten werden nicht optimale unterstützt |
Re: SP's <> prepared queries
Hallo Bernhard,
DB-Spezifische Sachen werden nicht unterstützt ? Oha. Wenn ich ZEOS benutze und für jede DB verschiedene Queries benutze, sollte das doch gehen ? Ein einfaches Beispiel wäre das Ermitteln, ob ein Feld in einer Tabelle bereits existiert über die Metadaten. Ich würde also ZEOS als Query benutzen, aber pro DB immer noch (u.U.) verschiedene Statements schicken. Heiko |
Re: SP's <> prepared queries
Zitat:
Wenn Du das o.g. Pattern verwendest wird der DB-Unterschiedliche Teil in einer Unit/Klasse gekapselt. Aber dazu muß man nicht mehr (man kann) Zeos verwende. |
Re: SP's <> prepared queries
Hallo,
naja, in der Theorie klingt es immer so einfach. Aber in der Praxis ... Mein Problem ist, dass ich z.B. gar nicht weiss, welche Unterschiede eine DB zu einer anderen haben kann. Das fängt schon an mit den Platzhaltern für Parameter. Das müßte die Query ja auch unterschiedlich zusammenbauen. Naja, ich versuche erst mal, von der BDE wegzukommen, das ist schon finster genug ;( Ich melde mich dann in 2 Jahren noch mal zu dem Thema ;) Heiko |
Re: SP's <> prepared queries
Hi,
ich verwende UIB, aber ausschließlich bei Server- bzw. in Mehrschichtanwendungen, da UIB kein bearbeiten des aktuellen Datensatzes in DB-Komponenten ermöglicht. SPs sind grundsätzlich schneller als "alles" andere, da die SPs quasi "vorkompiliert" in der DB gespeichert werden. Alle anderen Statements die von den Clients kommen müssen erst vom Server bearbeitet werden bis sie ausgeführt werden können. Desweiteren können SPs schneller sein, da diese i.d.R. auf einem Server ausgeführt werden, welcher i.d.R. eine bessere Ausstattung an Hardware hat als ein "normaler" Client. Lemmy |
Re: SP's <> prepared queries
Zitat:
Zitat:
Zitat:
den DB-Wechsel mit Hilfe dieser zentralen Klasse relativ einfach erledigen. Vorteil: - (fast) immer Release-Fähig - Einfacher Support mehrere DB's ist "Abfallprodukt" dieser Vorgehensweise Zitat:
|
Re: SP's <> prepared queries
Zitat:
Mann muss an der Reference auf das Command festhaten und es weiterbenutzen, wenn man es schnell benötigt. (Was IMHO den eigenen Code ganz schön zerfriemeln kann.... :? ) Der andere Grund warum selectable SProcs bei FB komischerweise[1] schneller sind scheint zu sein, dass der Optimizer von FB noch gehörig Aufholbedarf hat. Es dauert einfach zu lange bis eine Abfrage ausgeführt wird und sie wird meist nicht optimal ausgeführt. Bei SProcs scheint sich FB mehr Mühe zu geben (da er wohl auch mehr Zeit dafür hat ;) ) [1]Die Art wie Daten zwischen SProc und ResultSet ausgetauscht werden ist eigentlich mit einigem Overhead verbunden, der eigentlich zu etwas langsameren Laufzeiten führen sollte. (Hoch lebe der Kunjunktiv :stupid: ) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 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 by Thomas Breitkreuz