Eine Frage zum dem Sternchen
-
hallo
und zwar, stimmt das ,dass man nicht SELECT * schreiben sollte, da * ja bedeut alle Spalten. Wenn sich aber die Struktur der DB ändert,dann passt es ja nicht mehr.
Aber wie macht man es dann ?
-
Wie meinen?
Mit * wird immer jede Spalte ausgegeben. AUch die nicht umbeding relevanten (soll vorkommen ;)) -> mehr datenverkehr und belastung
Wenn sich die Struktur der Tabelle ändert, werden auch die neuen (evtl nich gebrauchten) spalten zurückgegeben..
-
du kannst dich bei einem select * nicht darauf
verlassen in welcher reihenfolge die einzelnen
spalten zurueckgegeben werden bzw. in der ergebnismenge
auftauchen.wie vernochan schon sagte es werden alle spaten zurueckgegeben.
machst du z.b. einen join auf 2 tabellen sind gewisse
spalten doppelt (PK und FK) vorhanden die du nur einmal brauchst.deshalb ist ein select * schlecht. gib die spalten lieber an.
-
Man kann sich zumindest bei MySQL und bei ODBC darauf verlassen das die Spalten so zurückgegeben werden wie man sie definiert hat.
Wird im Programm nicht mit dem Spaltenname sondern der Spaltestelle weiter gemacht (da müsste man erst den Namen auslesen und das dauert wieder) so ist eine bestimmte Spalte immer z.B. an 3ter Stelle.
Fügt man nun vor dieser Spalte eine neue ein funktioniert das Programm nicht mehr da die Spalte auf Stelle 3 erwartet wurde und jetzt an 4ter Stelle ist.
Die ist einer der Gründe. Der andere ist Traffic und Rechnerleistung am DB-Server.
Man sollte auch bei seine Querys darauf achten wieviele ROWS man zurück gibt.
Hat man eine Tabelle mit mehreren Mill Datensätzen wird man nicht alle Selectieren wenn man nur einen braucht.
Will man die Anzahl wissen sollte man nicht die Spalten auswählen und in einer Schleife durchgehen sondern COUNT() verwenden.Dies sind Dinge die ich alle schon gesehen habe.
-
okay, vielen Dank für eure hilfreichen Anworten
Dann mach ich das so, dass ich immer die Spalten angebe, die ich brauchedanke schön
-
Stgt schrieb:
Wenn sich aber die Struktur der DB ändert,dann passt es ja nicht mehr.
Die Struktor einer Tabelle sollte sich nicht mehr ändern! Man fügt möglicherweise neue Tabellen hinzu, aber bestehende Tabellen, sollten man möglichst nicht mehr ändern. Das führt oft genug zu sehr unangenehemen Nebeneffekten. Schnell hat man in einer Select-, Insert- oder Update Anweisung die Anpassung vergessen. Bestenfalls passiert einfach nichts, schlimmstenfalls crasht die Anwendung und wenn man ohne Transaktionen arbeitet, kann das die DB zerschiessen.
-
okay danke für den Hinweis