AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SELECT * FROM

Ein Thema von Hansa · begonnen am 15. Aug 2003 · letzter Beitrag vom 15. Aug 2003
Antwort Antwort
Seite 1 von 2  1 2      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

SELECT * FROM

  Alt 15. Aug 2003, 11:44
Hi,

es geht um den * in einem Select-Statement. Schreibe ich
Code:
Select * from <Table>
erhalte ich ja alle Felder der Tabelle zurück. Jetzt stellt sich die Frage, ob es sinnvoll ist, die tatsächlich benötigten Felder einzeln aufzuführen. Dadurch wird ja die übetragene Datenmenge erhöht. Andererseits ist es mehr Schreibarbeit und fehlerträchtiger, es ohne den Stern zu machen. Ich vergesse zum Beispiel immer die benötigte ID und wundere mich, daß ein Programm nicht wie gewünscht abläuft. Hat da jemand Erfahrungswerte dazu ?

Ah, noch was: wie wirkt sich das ganze bei einem Join aus ? Da dürfte es wohl schon anders aussehen, wie bei einer einzigen Tabelle.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: SELECT * FROM

  Alt 15. Aug 2003, 11:55
Also, meiner Meinung nach ist die Einzeln-Auflisten-Methode geschickter, und zwar deswegen, da bei einem Datenbankumbau normalerweise auch alle Programme, die auf diese DB zugreifen, geändert werden müssen. Falls du "SELECT * FROM" verwendest, fällt dir dies nicht sofort auf, da * alle Spalten selektiert. Im Netz ist das auch ein Performanceproblem, da "SELECT * FROM TABELLE" alle Datensätze bringt (=große Datenmenge). Deshalb gilt: lieber viel schreiben, zwei mal mehr nachschauen, aber dafür ein effizienteres Programm haben. (Meine Meinung)
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: SELECT * FROM

  Alt 15. Aug 2003, 11:58
Hi Hansa,

Zitat von Hansa:
Jetzt stellt sich die Frage, ob es sinnvoll ist, die tatsächlich benötigten Felder einzeln aufzuführen. Dadurch wird ja die übetragene Datenmenge erhöht.
??? Ähh.. Du meinst verringert, oder??

Grundsätzlich ist ein "Select * from" bei einem SQL-Server eine Art russisches Roulette: Schafft es der Server oder steht der Betrieb still...

Eigentlich sollte jede SQL-Abfrage die an den Server geht entsprechend der benötigten Datenmenge angepasst sein, d.h. brauchst Du aus der Tabelle Kunde nur die ID und den Namen, dann hol Dir gefälligst auch nur das und nicht den anderen Rotz auch noch.

Klar ist das ein "Mehraufwand" aber wenn Du es nicht machst ruft Dich spätestens der erste Anwender mit mehr als nur 10 Datensätzen an und beschwert sich weil die Datenbank so langsam ist....

Grüße
Lemmy
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: SELECT * FROM

  Alt 15. Aug 2003, 11:58
Zitat von Hansa:
... Jetzt stellt sich die Frage, ob es sinnvoll ist, die tatsächlich benötigten Felder einzeln aufzuführen...
Wie heisst es so schön "Kommt darauf an".

Wenn Du Daten z.B. in einem Grid anzeigne möchtest, die Tabelle 10,20,30 oder mehr Felder besitzt und Du im Grid aber nur 3 anzeigen möchtest bekommst Du einen riesen geschwindigkeits Vorteil.

Bei mir war das mit der Kunden übersicht so. Ich habe auch ein
SELECT * FROM kunden gemacht und es hat relativ lange gedauert bis das Grid gefüllt war. Dabei werden in dem Grid nur Name, PLZ und Ort angezeigt. Durch eine Reduzierung der auszugebenden Felder auf:
kunden_id, name, ort, plz habe ich die Anzeigegeschwindigkeit mehr als verdoppelt.

Solltest Du andererseits von sagen wir 20 Feldern nur 2 Stück nicht benötigen steht der Aufwand IMHO in keinem Verhältnis zum nutzen. Es seiden die beiden Felder sind BLOBs oder Memos mit riesen Datenmengen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: SELECT * FROM

  Alt 15. Aug 2003, 12:08
Uff, habt ihr sonst nichts zu tun ? Das ist ja schon phänomenal. Also gut, wisst ihr wie ich das jetzt mache ? Bzw. ist das schon so gemacht. Ich baue mir im IBexpert das SQL mit * zusammen. Dann reduziere ich das auf die benötigten Felder. Dabei passieren Fehler, weil ich zuviel des Guten weglasse oder auch zuwenig. Das Ergebnis schau ich mir an, also die Rohdaten. Kommt keine Fehlermeldung mehr, so kopiere ich den kompletten fehlerfreien String in das Delphi Programm und basta. Das hat jetzt schon 2mal so funktioniert.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#6

Re: SELECT * FROM

  Alt 15. Aug 2003, 12:13
@ Hansa: nicht umsonst bis du Gold-Member, das funzt nämlich wirklich perfekt, ich mache genau das gleiche, war mir zu faul alle Spalten zu merken
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#7

Re: SELECT * FROM

  Alt 15. Aug 2003, 12:18
Zitat von Hansa:
Uff, habt ihr sonst nichts zu tun ?
Bei dem Wetter? Nö

Zitat:
... fehlerfreien String in das Delphi Programm und basta. Das hat jetzt schon 2mal so funktioniert.
hihi.... mir ist es schon des öfteren passiert das ich ein Feld vergessen habe. Die Felder die für die Anzeige oder das direckte Bearbeiten benötigt werden "natürlich" nicht. aber dann habe ich wild losprogrammiert und wollte plötzlich auf ein Feld zugreifen das es nicht gab *klonk*

Aber für solche Dinge habe ich ja meine Beta-Test (auf deutsch: Anwender )
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: SELECT * FROM

  Alt 15. Aug 2003, 12:31
Das ganze hat noch einen Vorteil, zumindest für diejenigen, die (so wie ich) die SQL-Syntax nicht im Blut haben. 8) Dadurch, erst mal den * zu benutzen, kann der Join besser/leichter aufgebaut werden. In dem konkreten Fall hier, betrifft dies nämlich eine Tabelle mit sehr vielen und eine mit sehr wenigen Datensätzen und auch Feldern. Einmal hatte ich 3222 DS in der Datenmenge, das war ein Fehler im JOIN. Jetzt sind es noch 32, was stimmt. Und da habe ich dann noch 49 von 52 Feldern rausgeschmissen. Ja, schon krass, wenn man von über 50 Feldern nur 3 braucht. Schätze mal, daß durch diese Maßnahmen der Datenverkehr auf maximal 5 % reduziert ist.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Mauli
Mauli

Registriert seit: 7. Apr 2003
Ort: Wuppertal
160 Beiträge
 
Delphi 2005 Enterprise
 
#9

Re: SELECT * FROM

  Alt 15. Aug 2003, 12:45
Dumme Frage: was ist der 'IBexpert'
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: SELECT * FROM

  Alt 15. Aug 2003, 12:49
So was wie die schwachsinnige IBconsole, halt nur besser. 8) Hier (bei Lemmy) steht sogar ein Tuto von mir, mit Links etc.:

www.delphi-tutorials.de
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:44 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