Grundsätze zur Auswahl von MySQL-Datentypen

Grundsätze zur Auswahl von MySQL-Datentypen

Klein aber fein

Versuchen Sie grundsätzlich, zur Datenspeicherung Datentypen zu verwenden, die möglichst wenig Speicherplatz beanspruchen. Solche Datentypen sind im Allgemeinen auch schneller und beanspruchen weniger Speicherplatz, Arbeitsspeicher und sogar Cache und verbrauchen weniger CPU-Verarbeitungszyklen.

Allerdings ist es wichtig, den Bereich der Datenwerte, die Sie speichern möchten, genau abzuschätzen. Weil das Erweitern von Datenbereichen an mehreren Stellen in Ihrer Tabellenstruktur ein mühsamer und zeitaufwändiger Prozess sein kann. Wenn Sie sich nicht sicher sind, welcher Datentyp geeignet ist, wählen Sie den Typ mit dem kleinsten Speicherplatz, von dem Sie meinen, dass er den Bereich nicht überschreitet (Sie können ihn auch in den frühen Phasen des Systems anpassen oder wenn die Datentabelle nicht viele Daten enthält).

Mach es einfach

Einfachere Datentypen bedeuten weniger CPU-Zyklen zur Verarbeitung der Daten. Beispielsweise lässt sich mit ganzen Zahlen einfacher arbeiten als mit Zeichen, da Zeichensätze und Sortierungen den Vergleich von Zeichen komplizierter machen. Hier zwei Beispiele: Sie sollten zum Speichern von Uhrzeiten und Daten die integrierten Typen von MySQL verwenden, statt Zeichenfolgen. IP-Adressen sollten auch als Ganzzahlen gespeichert werden.

Vermeiden Sie Nullwerte

Viele Datentabellen erfordern Spalten, die NULL-Werte zulassen, obwohl der Standardwert NULL nicht in der Anwendung gespeichert werden muss. Im Allgemeinen ist es besser anzugeben, dass die Spalte NICHT NULL ist, als NULL zu speichern.

MySQL lässt sich mit Spalten, die Nullwerte zulassen, schwieriger optimieren, da diese Spalten Indizes, Indexstatistiken und Wertevergleiche erschweren. Darüber hinaus beanspruchen Spalten, die Nullwerte zulassen, mehr Speicherplatz und erfordern eine besondere Behandlung. Wenn ein Index für eine Spalte angegeben wird, die Nullwerte zulassen, erfordert dies ein zusätzliches Byte für jeden Indexeintrag und kann sogar dazu führen, dass die MyISAM-Engine einen Index mit fester Größe in einen Index mit variabler Größe umwandelt (beispielsweise einen einspaltigen Index für ein ganzzahliges Feld). Allerdings ist die Leistungsverbesserung durch die Konvertierung von NULL-Spalten in NOT NULL-Spalten normalerweise nicht groß. Sofern Sie nicht festgestellt haben, dass NULL-Spalten erhebliche Auswirkungen auf die Leistung haben, sollten Sie der Änderung der vorhandenen Datentabellenstruktur keine Priorität einräumen. Wenn Sie jedoch einen Index für eine Spalte erstellen müssen, sollten Sie versuchen, zu vermeiden, dass der Spaltenwert leer ist. Normalerweise empfiehlt es sich, die Spalte direkt auf NOT NULL zu setzen.

Natürlich gibt es Ausnahmen. Beispielsweise wird in InnoDB nur ein Bit zum Speichern von NULL-Werten verwendet, sodass bei der Speicherung großer Datenmengen effektiv Speicherplatz gespart werden kann. Dies ist bei der MyISAM-Engine jedoch nicht der Fall.

Schritte zum Auswählen des Datentyps

Der erste Schritt bei der Auswahl eines Datentyps besteht darin, zu entscheiden, welcher allgemeine Datentyp zur Darstellung der Datenspalte verwendet werden soll, ob es sich um einen numerischen Typ, einen Zeichenfolgentyp oder einen Zeittyp handelt. Normalerweise ist eine direkte Auswahl ausreichend, es gibt jedoch einige Ausnahmen (z. B. Beträge, Zeitstempel).

Der zweite Schritt besteht darin, den spezifischen Typ auszuwählen. MySQL verfügt über mehrere Speichermethoden für denselben Datentyp, basierend auf dem Datenwertebereich, der Genauigkeit und dem physischen Speicherplatz, und einige Datentypen haben einige spezielle Eigenschaften.

Beispielsweise können DATETIME und TIMESTAMP beide Uhrzeit und Datum speichern, beide mit einer Genauigkeit von einer Sekunde. Der Typ TIMESTAMP benötigt jedoch nur die Hälfte des Speicherplatzes, enthält Zeitzoneninformationen und unterstützt automatische Updates. Auf der anderen Seite werden Daten jedoch über einen kürzeren Zeitraum gespeichert, und diese besonderen Eigenschaften können sich als Hindernis erweisen.

Sehen wir uns die grundlegenden Datentypen an. MySQL unterstützt Aliase für Datentypen wie INTEGER, BOOL und NUMERIC. Dies sind lediglich Aliase und obwohl sie verwirrend aussehen können, haben sie tatsächlich keinen Einfluss auf die Leistung. Wenn Sie zum Erstellen einer Datentabelle einen Alias-Datentyp verwenden, denken Sie daran, dass Sie SHOW CREATE TABLE verwendet haben. Sie sehen dann, dass MySQL tatsächlich in den Basisdatentyp und nicht in den Alias ​​konvertiert.

Datentyp: Die grundlegenden Regeln, die definieren, welche Daten in einer Spalte gespeichert werden können und wie diese Daten tatsächlich gespeichert werden.

Datentypen werden für folgende Zwecke verwendet:

1. Ermöglicht Ihnen, die Daten einzuschränken, die in einer Spalte gespeichert werden können. Beispielsweise kann eine Spalte mit einem numerischen Datentyp nur numerische Werte akzeptieren.

2. Ermöglicht eine effizientere interne Datenspeicherung. Beispiel: Speichern Sie numerische Werte sowie Datums- und Uhrzeitwerte in einem Format, das prägnanter ist als Textzeichenfolgen.

3. Ermöglichen Sie das Ändern der Sortierreihenfolge. Wenn beispielsweise alle Daten als Zeichenfolgen behandelt werden, kommt 1 vor 10 und 10 vor 2 (Zeichenfolgen werden in lexikografischer Reihenfolge sortiert und von links Zeichen für Zeichen verglichen); als numerischer Datentyp können die Werte korrekt sortiert werden.

Einführung in Datentypen

1. String-Datentyp

Der am häufigsten verwendete Datentyp zum Speichern von Zeichenfolgen wie Namen, Adressen, Telefonnummern usw.

Es gibt zwei grundlegende Arten von Zeichenfolgen: Zeichenfolgen mit fester Länge und Zeichenfolgen mit variabler Länge.

Zeichenfolge mit fester Länge: akzeptiert eine Zeichenfolge mit fester Länge, deren Länge beim Erstellen der Tabelle angegeben wird. Spalten mit fester Länge erlauben nicht mehr als die angegebene Anzahl an Zeichen; sie belegen so viel Speicherplatz wie angegeben. Wie zum Beispiel: CHAR.

Zeichenfolge mit variabler Länge: speichert Text mit variabler Länge. Einige Datentypen mit variabler Länge haben eine maximale feste Länge, während andere vollständig variabel sind. Unabhängig vom Typ werden nur die angegebenen Daten gespeichert (zusätzliche Daten werden nicht gespeichert), z. B. TEXT.

PS: MySQL verarbeitet Spalten mit fester Länge viel schneller als Spalten mit variabler Länge. Und MySQL erlaubt keine Indizierung von Spalten mit variabler Länge (oder variablen Teilen einer Spalte).

Beschreibung des Datentyps:

  • CHAR: Eine Zeichenfolge mit fester Länge von 1 bis 255 Zeichen. Die Länge muss bei der Erstellung angegeben werden, sonst geht MySQL davon aus, dass es sich um CHAR(1) handelt.
  • ENUM: akzeptiert eine Zeichenfolge aus einem vordefinierten Satz von bis zu 64.000 Zeichenfolgen.
  • LONGTEXT: Wie TEXT, aber mit einer maximalen Länge von 4 GB.
  • MEDIUMTEXT: Wie TEXT, aber mit einer maximalen Länge von 16 KB.
  • SET: Akzeptiert null oder mehr Zeichenfolgen aus einem vordefinierten Satz von bis zu 64 Zeichenfolgen.
  • TEXT: Text variabler Länge mit einer maximalen Länge von 64 KB.
  • TINYTEXT: Wie TEXT, aber mit einer maximalen Länge von 255 Bytes.
  • VARCHAR: variable Länge, nicht mehr als 255 Bytes. Wenn beim Erstellen der Daten VARCHAR(n) angegeben wird, können Zeichenfolgen variabler Länge von 0 bis n Zeichen (wobei n ≤ 255) gespeichert werden.

PS:

1. Anführungszeichen: Unabhängig davon, welche Form des Zeichenfolgendatentyps verwendet wird, muss der Zeichenfolgenwert in Anführungszeichen (normalerweise einfache Anführungszeichen) eingeschlossen werden.

2. Zu beachtende Grundregeln: Wenn der Wert in Berechnungen (Summe, Durchschnitt usw.) verwendet wird, wird er in einer Spalte mit numerischem Datentyp gespeichert. Wenn der Wert als Zeichenfolge verwendet wird, wird er in einer Spalte vom Datentyp „Zeichenfolge“ gespeichert. Wenn Sie beispielsweise in einem numerischen Feld die Postleitzahl 01234 hinterlegen, wird der Wert 1234 gespeichert, wobei eine Ziffer fehlt.

2. Numerische Datentypen

Speichert einen numerischen Wert. MySQL unterstützt mehrere numerische Datentypen, von denen jeder einen Wert mit einem anderen Wertebereich speichert.

Je größer der unterstützte Wertebereich ist, desto mehr Speicherplatz wird benötigt. Darüber hinaus unterstützen einige numerische Datentypen die Verwendung von Dezimalstellen (und Brüchen), während andere nur ganze Zahlen unterstützen. Tabelle D-2 listet die häufig verwendeten numerischen MySQL-Datentypen auf.

PS:

1. Alle numerischen Datentypen (außer BIT und BOOLEAN) können mit oder ohne Vorzeichen sein. Vorzeichenbehaftete numerische Spalten können positive oder negative Werte speichern, während vorzeichenlose numerische Spalten nur positive Zahlen speichern können.

2. Der Standardwert ist signiert. Wenn Sie keine negativen Werte speichern müssen, können Sie UNSIGNED verwenden, wodurch Sie Werte mit doppelter Größe speichern können.

3. Im Gegensatz zu Zeichenfolgen sollten Werte nicht in Anführungszeichen eingeschlossen werden.

4. In MySQL gibt es keinen Datentyp, der speziell zum Speichern von Währungen dient. Im Allgemeinen wird DECIMAL(8, 2) verwendet.

Beschreibung des Datentyps:

  • BIT: Bitfeld, 1 bis 64 Bit. Vor MySQL 5 war BIT funktional gleichwertig mit TINYINT.
  • BIGINT: Ganzzahlwert, unterstützt -9223372036854775808 bis 9223372036854775807. Wenn es UNSIGNED ist, ist es eine Zahl zwischen 0 und 18446744073709551615.
  • BOOLEAN (oder BOOL): Boolesches Flag, das entweder 0 oder 1 ist und hauptsächlich für Ein/Aus-Flags verwendet wird.
  • DECIMAL (oder DEC): Ein Gleitkommawert mit variabler Genauigkeit.
  • DOUBLE: Gleitkommawert mit doppelter Genauigkeit
  • FLOAT: Gleitkommawert mit einfacher Genauigkeit
  • INT (oder INTEGER): Ganzzahlwert, unterstützt -2147483648 bis 2147483647, UNSIGNED ist dasselbe wie oben.
  • MEDIUMINT: Ganzzahlwert, unterstützt -8388608 bis 8388607, UNSIGNED ist dasselbe wie oben.
  • REAL: 4-Byte-Gleitkommawert.
  • SMALLINT: Ganzzahlwert, unterstützt -32768 bis 32767, UNSIGNED ist dasselbe wie oben.
  • TINYINT: Ganzzahlwert, unterstützt -128 bis 127, UNSIGNED ist dasselbe wie oben.

3. Datums- und Uhrzeitdatentypen

Beschreibung des Datentyps:

  • DATUM: Gibt das Datum vom 01.01.1000 bis zum 31.12.9999 im Format JJJJ-MM-TT an.
  • DATETIME: Eine Kombination aus DATE und TIME.
  • TIMESTAMP: Die Funktion ist dieselbe wie DATETIME, aber der Bereich ist kleiner.
  • ZEIT: Das Format ist HH:MM:SS.
  • JAHR: 2 Ziffern, von 70 bis 69 (1970 bis 2069); 4 Ziffern, von 1901 bis 2155

4. Binäre Datentypen

Kann beliebige Daten (auch binäre Informationen) speichern, wie etwa Bilder, Multimedia, Textverarbeitungsdokumente usw.

Beschreibung des Datentyps:

  • BLOB: Die maximale Länge eines Blobs beträgt 64 KB.
  • MEDIUMBLOB: Die maximale Bloblänge beträgt 16 MB.
  • LONGBLOB: Die maximale Länge eines Blobs beträgt 4 GB.
  • TINYBLOB: Die maximale Länge eines Blobs beträgt 255 Bytes.

Abschluss:

MySQL bietet viele Möglichkeiten zur Darstellung von Daten. Es wird empfohlen, den Speicherbereich gängiger Datentypen und die Anzahl der von ihnen belegten Bytes zu verstehen und den geeigneten Datentyp so weit wie möglich basierend auf dem geschätzten Datenwertbereich oder der geschätzten Datenlänge des Produkts auszuwählen, um sich von Beginn der Tabellenerstellung an auf die Leistung zu konzentrieren. Der Aufwand für spätere Anpassungen übersteigt häufig den Zeitaufwand für sorgfältige Überlegungen zu Beginn des Entwurfs.

Oben finden Sie Einzelheiten dazu, warum MySQL den geeigneten Datentyp auswählen muss. Weitere Informationen zu MySQL-Datentypen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Grundkenntnisse der MySQL-Datenbank
  • Detaillierte Erklärung des Integer-Datentyps tinyint in MySQL
  • Details zum MySQL-Datentyp
  • Detaillierte Erläuterung der MySql-Datentyp-Tutorialbeispiele
  • MySQL-Datenbankoperationen und Datentypen

<<:  So platzieren Sie große Bilder auf kleinem Raum einer Webseite

>>:  Unterschied zwischen HTML4 und HTML5: So fügen Sie einer Eingabe Fokusimplementierungscode hinzu

Artikel empfehlen

8 Tipps für Vue, die Sie nach dem Lesen lernen werden

1. Verwenden Sie immer :key in v-for Die Verwendu...

JavaScript Canvas realisiert den Effekt des Neun-Quadrat-Rasterschneidens

In diesem Artikel wird der spezifische Code der L...

Implementierung des Docker-Buildings für Maven+Tomcat-Basisimages

Vorwort In der Java-Programmierung werden die mei...

Detaillierte Erläuterung der Javascript-Wissenspunkte

Inhaltsverzeichnis 1. Grundlegende Einführung in ...

Zusammenfassung des Speicherorts und Tipps für Docker-Konfigurationscontainer

Tipps zur Verwendung von Docker 1. Bereinigen Sie...

Der Unterschied zwischen method=post/get in Form

Das Formular bietet zwei Möglichkeiten zur Datenüb...

Häufige JavaScript-Speicherfehler und Lösungen

Inhaltsverzeichnis 1. Zeitüberwachung 2. Ereignis...

Das WeChat-Applet realisiert ein Verknüpfungsmenü

Um das Kursdesign zu realisieren, habe ich kürzli...

JavaScript generiert dynamisch eine Tabelle mit Zeilenlöschfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erklärung generischer Fälle in TypeScript

Definition von Generika // Anforderung 1: Generik...

Mit JS in zehn Minuten die Existenz von Elementen in einem Array bestimmen

Vorwort In der Front-End-Entwicklung müssen Sie h...