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

ist es gut, dezimalwerte als varchar in mysql zu speichern?

Die kurze Antwort lautet:Nein, das schadet der Performance.

Die längere Antwort:VARCHAR-Felder haben eine variable Länge, was bedeutet, dass die Formatierung der Datenbankblöcke die Größe der dort eingetragenen Daten nicht im Voraus berücksichtigen kann. Sicher, es gibt eine maximale Feldlänge, aber ansonsten bist du schlechter dran.

Andererseits kostet es Sie, einen VARCHAR zu lesen und ihn dann so zu interpretieren, dass er in einen Fließkommatyp passt. Und es führt neue Problemmöglichkeiten ein. Versuchen Sie, alle Dezimalstellen zu erhalten, die "11,99" ausmachen. Hoffe du bringst die richtige Anzahl an Nachkommastellen, denn in VARCHAR ist "11.99" !="11.990".

Und dann gibt es noch die Indizierung. Normalerweise hat niemand ein Dezimalfeld indiziert, aber wenn Sie es tun, benötigt ein Index für ein VARCHAR-Feld mehr Platz.

Alles in allem ist es keine gute Idee, etwas in einem unspezifischen Feldtyp zu speichern. In der DB-Struktur gilt es normalerweise als Best Practice, so spezifisch wie möglich zu sein.