Was genau passiert beim Select?

jenno

Erfahrenes Mitglied
Was genau passiert eigentlich, wenn ich die Datenbank mit select * from tabelle abfrage? Werden dann alle Ergebnisse irgendwo zwischengespeichert oder gibt es nur einen Zeiger auf die Ergebniszeilen in der Datenbank?

Meine Frage, weil ich eine Tabelle mit sehr vielen Spalten habe. Ist es also besser immer nur die benötigten Spalten abzufragen oder ist das eigentlich egal?
 
hmm,

ich versteh deine Frage nicht ganz sicher aber die Antwort ist ja, du solltest immer nu die Spalten abfragen die du acu hwirklich haben willst.

Es spricht natürlich nichts gegen SELECT * FROM x aber wenn du nur die Spalte NAME haben willst ist natürlich SELECT NAME FROM x schneller !

Die DB muss natürlich immer den Satz zwischenspeichern und da ist natürlich ein Wert schneller als alle !
 
Genau das ist die Frage. Wird da was zwischengespeichert oder nur ein Zeiger auf die entsprechende Ergebniszeile?

Und es ist ja schon ein Unterschied ob man

PHP:
Select * From tabellenname where id=755

oder

PHP:
Select feld1, feld2, feld3, feld4, feld5, feld6, feld9, feld25, feld33, feld34, feld35, feld36, feld37, feld38, feld78, feld79, feld80, feld100, feld101......feld250 From tabellenname where id=755

schreiben muss! Weil wenn man die Werte dann einsetzt - in diesem Falle in einer HTML Seite -wirds auch alles nochmal hingeschrieben (z.B. $data['feld156']). Mich interessiert, ob das Sparen der doppelten Schreibarbeit tatsächlich einen Einfluss auf die Geschwindigkeit hat.
 
hmm,

natürlich spart das 'ausschreiben' Zeit da du damit dem Interpreter abnimmst was er aus einem '*' selbst generieren muss !
 
Nein kein Zeiger - die select Abfrage erstellt intern ein array mit den
Ergebnissen
Wenn das nicht so währe, gingen solche Nettigkeiten wie ORDER BY
oder HAVING usw nicht
 
Zurück