Ich habe darüber gelesen und ich verstehe, dass es besser ist, die Spaltennamen explizit aufzulisten, habe ich noch eine Frage.Wählen Sie * vs Alle Spaltennamen auswählen
Lassen Sie sich das folgende Szenario vorgeben (was zu meinem wirklichen Leben Szenario ganz in der Nähe):
Neue Spalten werden nie
Ich benutze keine Datenblob
- hinzugefügt werden Ich möchte eigentlich alle Spalten zurückgeben
- Ich habe eine Tabelle mit etwa 140 Millionen Zeilen
- I Brauche eigentlich nicht alle 140 Millionen Zeilen, aber lass uns einfach so tun, um zu argumentieren
- Ich verwende keine Joins und niemand anderes wird
- Die Abfragen unten sind buchstäblich genau, wie ich die Abfragen ausführen werde .
Gibt es einen Unterschied in der Leistung zwischen den folgenden Abfragen:
select *
from table
vs
select every_column_name
from table
Edit: Ich verstehe, dass es eine Million Fragen zu diesem Thema ist. ABER FÜR DIESES BESONDERE SZENARIO gibt es irgendeine Art von Leistungsunterschied? Ist select *
immer noch fehlerhaft oder haben beide Abfragen dieselbe Leistung?
Von was ich sagen kann, basierend auf den Ergebnissen der Verwendung explain
, gibt es keinen Unterschied für diesen speziellen Fall.
Die Verwendung von 'select *' kann insbesondere bei Ad-hoc-Abfragen nicht schaden. Es gibt einige Risiken, aber Sie scheinen sie zu verstehen, also können Sie eine gute Entscheidung darüber treffen, was in Ihrem speziellen Fall am besten funktioniert. –