Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi select * und blobs (https://www.delphipraxis.net/78398-select-%2A-und-blobs.html)

hoika 4. Okt 2006 12:10

Datenbank: FB • Version: 1.5 • Zugriff über: BDE

select * und blobs
 
Hallo,

wenn ich in eine Tabelle ein Blobfeld einfüge
und per select * zugreife,
wird dann nur das Blobhandle, oder der ganze Blob-Inhalt übers Netz geladen.

Hintergrund:
Ich benutze an vielen Stellen das select *
und möchte Performance-Probleme vermeiden.


Heiko

mkinzler 4. Okt 2006 17:28

Re: select * und blobs
 
Ich weiß nicht, wie es beim Zugriff über die BDE ist, aber normalerweise wird nur der Blobhandle übermittelt.

stefanniehaus 9. Okt 2006 09:58

Re: select * und blobs
 
Also im Normalfall müsstest du das ganze blob bekommen!
Und merken:
Ein guter Programmierer verwendet nie "SELECT *" ;)

mimi 9. Okt 2006 10:18

Re: select * und blobs
 
mal eine kurzte frage:
Zitat:

Ein guter Programmierer verwendet nie "SELECT *" Wink
meinst du damit man sollte die fehlder dort wählen die gebraucht werden ?
z.b. Select spalte1,spalte2

Muetze1 9. Okt 2006 10:24

Re: select * und blobs
 
Ja, weil dadurch die Abfragedauer, die grösser Abfrage und der Ergebnismenge sowie die Grösse der zu übertragenen Daten verringert. Auch Kombinationen aus Tabellen am besten gleich per Select mit erledigen und nicht beide Tabellen abfragen um dann selbst das Ergebnis zu kombinieren. Die Dauer und Grösse der Daten zum einen und die Dauer der Kombination zum anderen. Eine Datenbank ist darauf spezialisiert und kombiniert dir die Daten schneller als dein Programm.

mimi 9. Okt 2006 10:51

Re: select * und blobs
 
Zitat:

und nicht beide Tabellen abfragen um dann selbst das Ergebnis zu kombinieren.
kannst du mal ein beispiel für so eine abfrage posten?

hoika 9. Okt 2006 11:01

Re: select * und blobs
 
Hallo,


1. bisher brauche ich alle Felder (jaja)

2. zum join

er meinte, dass man z.B. nie sowas schreiben sollte

SQL-Code:
select * 
from table1 
join table2 on table2.table_1_id=table1.id
Damit bekommst du alle Felder von table1 UND table2.
In der Regel braucht man aber nur ein paar Felder.
Durch das select * werden aber alle übers Netz gejagt,
und das kann bei Tabellen mit vielen Feldern schon etwas dauern.

Man schreibt dann normaerweise sowas wie

SQL-Code:
select table1.id, table1.name, table2.was_weissich
from table1 
join table2 on table2.table_1_id=table1.id
Ein zweiter Nachteile des select * ist, wenn es einen
Feldnamen gibt, der in beiden Tabellen vorhanden ist.
Wenn du Pecj hast, wird irgendeine Tabelle "ausgelost",
und deren Feld übergeben.

Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz