Wenn Sie meinen: "Gibt es eine Strafe für die Deklaration der Feldgröße, die größer ist als die tatsächlich darin gespeicherten Werte?", Lautet die Antwort Nein, solange sie als varchar deklariert ist. Jede mir bekannte SQL DB-Engine speichert nur die Anzahl der tatsächlich in den Daten angegebenen Zeichen (plus einen Längenwert). Wenn Sie das Feld also als varchar (100) definieren, aber nur 10 Zeichen darin speichern, werden nur 10 Zeichen auf der Festplatte belegt (plus etwa 2 Byte für die Länge). Im Zweifelsfall mache ich meine Varchar-Felder routinemäßig lächerlich groß.
Wenn Sie meinen: "Gibt es eine Strafe für das Speichern langer Zeichenfelder?", Lautet die Antwort "Ja". Speicherplatz ist heute billig, aber nicht kostenlos, sodass Sie ihn nicht ohne Grund verschwenden möchten. Wahrscheinlich wichtiger ist, dass das Lesen von Daten von der Festplatte einige Zeit in Anspruch nimmt. Je länger Ihre Datenfelder sind, desto langsamer wird das Programm. Wenn das Feld indiziert ist, kann dies Ihre Abfragen wirklich verlangsamen, da bei jedem Lesevorgang der Schlüsselwert mit diesem großen langen Feld verglichen werden muss.
Denken Sie daran, dass der Benutzer ein Big-Data-Eingabefeld früher oder später verwendet, wenn Sie es eingeben.
Alles in allem würde ich mich eher auf die Seite von zu groß als von zu klein irren. Der Speicherplatz ist so günstig, dass Sie Benutzer nicht zwingen müssen, Abkürzungen im laufenden Betrieb zu erfinden, da sie die realen Daten nicht in das verfügbare Feld einpassen können. Das System, an dem ich heute arbeite, verfügt über ein Produktbeschreibungsfeld, das für viele der tatsächlichen Namen unserer Produkte zu klein ist, sodass Benutzer abkürzen müssen. Und natürlich wird jeder Benutzer anders abgekürzt, sodass wir zwanzig verschiedene Möglichkeiten haben, dasselbe zu sagen.