Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SP's <> prepared queries (https://www.delphipraxis.net/74751-sps-prepared-queries.html)

hoika 8. Aug 2006 10:36

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

Bernhard Geyer 8. Aug 2006 10:51

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 ...

hoika 8. Aug 2006 10:56

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

Bernhard Geyer 8. Aug 2006 11:18

Re: SP's <> prepared queries
 
Zitat:

Zitat von hoika
auch die SP liefert mir ein Recordset.
OK, das wird zeilenweise ausgeliefert und nicht im Server gespeichert.

Ich meine ob der Recordset zum Client muss und nicht ob in der SP ein RS verwendet wird.

Zitat:

Zitat von hoika
Vista kann ja noch bde.

Kann ich nicht sagen. Und vor allem welches Vista: 32 oder 64 Bit.

Zitat:

Zitat von hoika
Was empfielst du denn für Firebird ?

Ich mach nichts mit Firebird. Meine Vermutung mit den RS dürfte aber für alle SQL-Datenbanken gelten.

TBx 8. Aug 2006 11:22

Re: SP's <> prepared queries
 
Hallo Heiko,

für einen schnellen und einfachen Umstieg kann ich die ibobjects empfehlen.

Ansonsten sind die Zeos-Komponenten zu empfehlen.

Mein persönlicher Rat: Finger weg von IBX

Gruß

onlinekater

[Edit]man wadd Dreckfuhler [/Edit]

hoika 8. Aug 2006 11:51

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

TBx 8. Aug 2006 11:55

Re: SP's <> prepared queries
 
Zitat:

Zitat von hoika
Ziel ist, dass ich mehrere Datenbanken unterstützen kann (Oracle und MS-SQL2005).

womit Du automatisch wieder bei ZEOS landest.

--> 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: klick

Bernhard Geyer 8. Aug 2006 12:33

Re: SP's <> prepared queries
 
Zitat:

Zitat von onlinekater
Zitat:

Zitat von hoika
Ziel ist, dass ich mehrere Datenbanken unterstützen kann (Oracle und MS-SQL2005).

womit Du automatisch wieder bei ZEOS landest.

Und wie willst Du die SQL-Unterschiede mit ZEOS handhaben? :gruebel:

WEnn Du wirklich mehrerr DB's unterstützen mußt, so empfehle ich dir eine Kapslung z.B. mit dem Bridge-Pattern.
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

hoika 8. Aug 2006 17:06

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

Bernhard Geyer 8. Aug 2006 17:11

Re: SP's <> prepared queries
 
Zitat:

Zitat von hoika
Ich würde also ZEOS als Query benutzen,
aber pro DB immer noch (u.U.) verschiedene Statements schicken.

Und wo willst Du das machen? Verrteilt in deinem Programm in den Entsprechenden Units jeweils das SQL-Statement zusammenbauen?

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:05 Uhr.
Seite 1 von 2  1 2      

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