Zum Inhalt springen

Datenbankaufruf


hund555

Empfohlene Beiträge

Hallo,

sagen wir mal ich will eine Datenbanktabelle aufrufen, welche 0,5 mio Eiträge mit ca. 20 Attributen hat.

wieviel zeit spart man, wenn man statt

a) select * from tabelle

B) select atr1, atr2, atr3 from tabelle

verwendet?

Ab wieviel Datenbankaufrufen sollte man unbedingt b Variante verwenden um Zeit und Performance unterschied zu spüren?

Vielen Dank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

ich behaupte mal, dass du gar nichts sparen wirst, denn das sind beide Full Table Scans, d.h. du rufst jedes Mal jeden Datensatz ab. Solange da keine where Klausel und ein Index existiert, dürfte das beides ähnlich lange dauern (außer vielleicht wenn du ne Ausgabe auf dem Bildschirm hast, der gepuffert werden muss, weil bei dem select *.... ja dann einfach mehr Daten angezeigt werden müssen.)

EDIT: Ok, Letzteres betrifft natürlich auch den Netzwertraffic, wenn es nun 100 Spalten sind und du nur 2 brauchst, ist das natürlich unnötige Last.

Bearbeitet von carstenj
Link zu diesem Kommentar
Auf anderen Seiten teilen

... naja, bei bis zu 10 Treffern ist die Datenmenge, die über das Netz geht nicht so groß... abhängig davon, wieviele Spalten du davon hast... eine Selektion auf dei benötigten Spalten macht aber in jedem Fall Sinn, da du ja nur wirklich das lädst, was du auch brauchst. Das Netzwerk wird es dir später danken...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Schau dir mal den logischen ablauf eines queries an, dann siehst du wann der eigentliche select ausgefuehrt wird, zumindest bei mssql.

SQL SERVER – Logical Query Processing Phases – Order of Statement Execution | Journey to SQL Authority with Pinal Dave

Sprich dein ergebnis set nach der where auswertung muss schon recht gross bleiben, damit du viel unterschied spuerst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ab wieviel Datenbankaufrufen sollte man unbedingt b Variante verwenden um Zeit und Performance unterschied zu spüren?

Unabhängig von der Performance solltest Du in produktivem Code auf SELECT * generell verzichten (außer Du machst das ganz bewußt und bist dir auch im klaren darüber warum), denn wenn sich die Tabelle ändert (neue Spalten etc) werden diese ohne dein Zutun ebenfalls mitselektiert. Wie Dein Programm dann darauf reagiert ist erstmal undefiniert.

Des weiteren wird sofort aus dem Statement ersichtlich, welche Spalten du wirklich benötigst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...