Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist es schlecht für die Leistung, alle Spalten auszuwählen?

Hier geht es nicht so sehr um den Datenbankserver, sondern nur um die Netzwerkkommunikation. Indem Sie alle Spalten auf einmal auswählen, teilen Sie dem Server mit, alle Spalten auf einmal zu Ihnen zurückzugeben Bedenken bezüglich IO und all dem werden in der Frage und Antwort von @Karamba in einem Kommentar gut angesprochen:select * vs select column . Aber für die meisten realen Anwendungen (und ich verwende "Anwendungen" in jeder Hinsicht) ist das Hauptanliegen nur der Netzwerkverkehr und wie lange es dauert, die Daten zu serialisieren, zu übertragen und dann zu deserialisieren. Obwohl die Antwort wirklich so oder so ist.

Das Zurückziehen aller Spalten ist großartig, wenn Sie beabsichtigen, sie alle zu verwenden, aber das kann eine Menge zusätzlicher Datenübertragung bedeuten, insbesondere wenn Sie beispielsweise lange Zeichenfolgen in Ihren Spalten speichern. In vielen Fällen wird der Unterschied natürlich nicht nachweisbar sein und ist meist nur eine Frage des Prinzips. Nicht alle, aber eine deutliche Mehrheit.

Es ist wirklich nur ein Kompromiss zwischen Ihrer oben erwähnten Faulheit (und glauben Sie mir, wir fühlen uns alle so) und wie wichtig Leistung wirklich ist ist.

Das alles gesagt, wenn Sie tun beabsichtigen, alle Spaltenwerte zu verwenden, ist es viel besser, sie alle auf einmal zurückzuziehen, als eine Reihe von Abfragen einzureichen.

Stellen Sie es sich wie eine Websuche vor:Sie führen Ihre Suche durch, Sie finden Ihre Seite und Sie benötigen nur ein Detail. Sie könnten die gesamte Seite lesen und alles über das Thema wissen, oder Sie könnten einfach zu dem Teil springen, in dem es darum geht, wonach Sie suchen, und fertig. Letzteres ist viel schneller, wenn das alles ist, was Sie jemals wollen, aber wenn Sie dann etwas über die anderen Aspekte lernen müssen, ist es viel besser, sie beim ersten Mal zu lesen, als erneut suchen und finden zu müssen die Website, um darüber zu sprechen.

Wenn Sie sich nicht sicher sind, ob Sie die anderen Spaltenwerte in Zukunft benötigen, müssen Sie als Entwickler entscheiden, welcher Fall wahrscheinlicher ist.

Es hängt alles davon ab, was Ihre Anwendung ist, was Ihre Daten sind, wie Sie sie verwenden und wie wichtig die Leistung wirklich ist ist für dich.