Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

  • Autor

sorry, habe den Befehl nicht voll ausgeschrieben

where Klausel wäre dabei und würde am ende 0 bis 10 Treffer liefern .

so in etwa:

select atr1, atr2, atr3 from tabelle where id= '1234'.

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

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.

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.