hund555 Geschrieben 6. September 2013 Teilen Geschrieben 6. September 2013 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 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
carstenj Geschrieben 6. September 2013 Teilen Geschrieben 6. September 2013 (bearbeitet) 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 6. September 2013 von carstenj Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hund555 Geschrieben 6. September 2013 Autor Teilen Geschrieben 6. September 2013 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'. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
R1I9C8H5I Geschrieben 6. September 2013 Teilen Geschrieben 6. September 2013 ... 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wuwu Geschrieben 6. September 2013 Teilen Geschrieben 6. September 2013 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 13. September 2013 Teilen Geschrieben 13. September 2013 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.