ZEOS TZTable Verhalten

Rund um die LCL und andere Komponenten
Antworten
starkard
Beiträge: 87
Registriert: Mi 31. Okt 2007, 10:44

ZEOS TZTable Verhalten

Beitrag von starkard »

Hallo Leute,
Bin gerad bei dem Thema ZEOS über folgende Aussage gestolpert:

"Hier ist zu bemerken, dass eine Table in einer C/S-Anwendung eigentlich nur für Tabellen verwendet werden sollte, die sehr
klein sind, weil alle Datensätze beim Öffnen der Table vom Server in den Speicher des
Client übertragen werden. Sie verhält sich wie ein "SELECT * FROM XYZ"-Statement.
Auch ein solches sollte nach Möglichkeit bei C/S-Anwendungen unterbunden werden.
Man sollte immer bestrebt sein, die Ergebnismenge, die vom Server zum Client
übertragen werden muss, so klein wie nur irgend möglich zu halten (vorzugsweise nur ein
Datensatz)."

Für mich heisst das: Auch wenn ich gezielt nur einen Datensatz auswähle (z.B SELECT blabla WHERE ID=1) bekomm ich immer die ganze tabelle der Datenbank in den Speicher gelesen?? Dieses Verhalten ist mir leider nicht schlüssig und sehr unerwünscht da es in zeitkritischen Anwendnugen und grossen Tabellen so nicht mehr zu gebrauchen ist. Gibt es eine Möglichkeit oder Komponente die dieses Verhalten unterbindet? thx

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: ZEOS TZTable Verhalten

Beitrag von monta »

Wie wäre es mit einer ZQuery und dem entsprechenden Select?

Genau dazu sind Querys doch letztlich da.
Johannes

starkard
Beiträge: 87
Registriert: Mi 31. Okt 2007, 10:44

Re: ZEOS TZTable Verhalten

Beitrag von starkard »

Wenn dann wirklich auch nur die Ergebnismenge eingelesen wird die ich haben möchte ist das natürlich in Ordnung. Hatte es so verstanden, dass selbst dann immer die ganze Tabelle ausgelesen wird. thx

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: ZEOS TZTable Verhalten

Beitrag von monta »

Nein...dann wäre ja das SQL-Konzept zu Grunde gerichtet. Wenn du entsprechend geschickt die Abfrage baust, bekommst du mit der TZQuery auch nur den Datensatz zurück, weil der SQL-Server ja auch nur den Datensatz raus liefert.

Was die TZTable da macht, keine Ahnung...hab ich nie verwendet aber nach dem Namen kann ich mir schon vorstellen, das die zur ANzeige ganzer Tabellen ist und somit alles anfordert.
Johannes

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6770
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: ZEOS TZTable Verhalten

Beitrag von af0815 »

Man kann sich das Verhalten zB. bei MySQL mit den Admintools ansehen.

Dort mal mit einer TQuery und mal mit einer TTable die Abfrage machen und sich ansehen, was vom Server wirklich abgefragt wird. Kann recht interessante Ergebnisse und Erkenntnisse bringen :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

starkard
Beiträge: 87
Registriert: Mi 31. Okt 2007, 10:44

Re: ZEOS TZTable Verhalten

Beitrag von starkard »

Danke werd ich mal sofort ausprobieren.

Gehört zwar hier nicht hin, aber gibts sowas wie EasyQuery (Komponente zum Erstellen von SQLAbfragen per Mausklick) auch für Lazarus?

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: ZEOS TZTable Verhalten

Beitrag von monta »

Nein...aber wenn du ein entsprechendes Modell hast, kannst du natürlich fast jedes Programm zum Datenbankdesign nutzen und die SQL-Abfragen generieren.

Bspw. http://www.fabforce.net/dbdesigner4/scr ... rymode.png" onclick="window.open(this.href);return false;
Johannes

Domo Sokrat
Beiträge: 9
Registriert: Sa 31. Mai 2008, 19:37
OS, Lazarus, FPC: WinVista - Laz 0.9.26-2 - FPC 2.2.2
CPU-Target: 32Bit
Wohnort: Wehrheim / Taunus
Kontaktdaten:

Re: ZEOS TZTable Verhalten

Beitrag von Domo Sokrat »

Hi starkard,

wie monta schon ausgeführt hat, ist ein "gescheites" SELECT-Statement immer die bessere Wahl. Und es simmt tatsächlich, was ich in meinem ZeosLib-Tutorial geschriben habe: Intern wird für eine ZTable ein SELECT * FROM tblXYZ abgesetzt und die Ergebnismenge wird auf den Client übertragen.

Was das Thema "EasyQuery" angeht: An Zeos 7 wird im Rahmen der Möglichkeiten (es ist ein Freizeit-Projekt!) geschraubt. In diesem Zuge soll auch der SQL-Statment-Editor überarbeitet werden und genau diese Möglichkeit bieten.
Keep On Coding!

Michael.

Und denkt daran: Es wird überall nur mit Wasser gekocht ...

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Re: ZEOS TZTable Verhalten

Beitrag von knight »

starkard hat geschrieben:
Gehört zwar hier nicht hin, aber gibts sowas wie EasyQuery (Komponente zum Erstellen von SQLAbfragen per Mausklick) auch für Lazarus?
Hast du schon einen Blick auf den Database Desktop (im tools Unterverzeichnis von Lazarus) geworfen?

knight

Domo Sokrat
Beiträge: 9
Registriert: Sa 31. Mai 2008, 19:37
OS, Lazarus, FPC: WinVista - Laz 0.9.26-2 - FPC 2.2.2
CPU-Target: 32Bit
Wohnort: Wehrheim / Taunus
Kontaktdaten:

Re: ZEOS TZTable Verhalten

Beitrag von Domo Sokrat »

:shock: W O W ! ! ! :shock:
Lazarus birgt immer noch das eine oder andere Juwel ... Man muss sich nur umschauen.
Keep On Coding!

Michael.

Und denkt daran: Es wird überall nur mit Wasser gekocht ...

Antworten