Eine kurze Einführung in die Abfrageeffizienz von MySQL-Speicherfeldtypen

Eine kurze Einführung in die Abfrageeffizienz von MySQL-Speicherfeldtypen

Die Suchleistung von der schnellsten bis zur langsamsten ist (hier ist, was ich gehört habe):

  • Erstens: tinyint, smallint, mediumint, int, bigint
  • Zweitens: char, varchar
  • Drittens: NULL

Erläuterung (Nachdruck):

Ganzzahltypen

1. TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT, verwenden jeweils 8, 16, 24, 32, 64 Bytes

2. Alle Ganzzahlen verfügen über das optionale Attribut UNSIGNED (beispielsweise liegt der Wertebereich des Felds tinyint nach unsigned bei 0-255, während der Wertebereich von signed zwischen -128 und 127 liegt. Wenn wir also eindeutig keine negativen Werte benötigen, setzen wir signed normalerweise nicht, um negative Zahlen zu unterstützen.)

3. INT(1) und INT(20) sind für Speicherung und Berechnung gleich. N in INT(N) gibt lediglich die Anzahl der von einigen interaktiven Tools anzuzeigenden Zeichen an.

Zeichentyp

char hat eine feste Länge und ist nicht so effizient wie varchar, aber schlechter als varchar bei der Abfrage kurzer Daten

Feste Länge. Wenn beispielsweise UUID als Primärschlüssel verwendet wird, wäre char geeigneter.

NULL-Typ

1. Die Indizierung von NULL-Spalten erfordert zusätzlichen Speicherplatz

2. Beim Vergleichen und Berechnen werden Nullwerte verarbeitet, was zu Indexfehlern führen kann

Versuchen Sie daher, den Typ NULL nicht zu verwenden, sondern eher Integer-Typen

Darüber hinaus ist der Zeit-Datum-Datentyp

1. Verwenden Sie keine Zeichenfolgen zum Speichern von Datumsdaten, da dies Platz verschwendet

2. DATE kann Jahre von 1001 bis 9999 mit einer Genauigkeit von Sekunden speichern. Es fasst Datum und Uhrzeit in einer Ganzzahl im Format JJJJMMTTHHMMSS zusammen und verwendet dabei 8 Bytes.

3. TIMESTAMP speichert die Anzahl der Sekunden seit 1970, was dem Unix-Zeitstempel entspricht. Es kann nur 1970 bis 2038 speichern und verwendet 4 Bytes.

4. Die beiden Funktionen FROM_UNIXTIME() und UNIX_TIMESTAMP() konvertieren Datumsangaben und Unix-Zeitstempel

5. DATE und TIMESTAMP speichern die Zeit, aber wo ist die Zeit? ? ? : Ersteres ist eine Zeitdarstellung, egal wo Sie sich befinden (unabhängig von der Zeitzone), während Letzteres die Greenwich Mean Time ist. . Das heißt, beim Speichern wird DATE entsprechend der angegebenen Zeit gespeichert und TIMESTAMP wird vor dem Speichern zunächst entsprechend der entsprechenden Greenwich Mean Time basierend auf der Zeitzone und dem angegebenen Zeitstempel berechnet. Beim Zugriff wird DATE entsprechend der gespeicherten Zeit zurückgegeben und TIMESTAMP wird entsprechend dem gespeicherten Zeitstempel (als Greenwich Mean Time betrachtet) und der Zeitzone berechnet, um die entsprechende Zeit in der Zeitzone zu berechnen.

6. Normalerweise wird TIMESTAMP verwendet, das eine hohe Platzeffizienz aufweist

7. MySQL bietet keine Datums- und Zeitwerte mit einer Granularität kleiner als Sekunden. Bei Bedarf können Sie BIGINT verwenden, um Zeitstempel auf Mikrosekundenebene zu speichern, oder DOUBLE verwenden, um den Dezimalteil nach Sekunden zu speichern.

Reelle Zahlentypen

1. DECIMAL wird für finanzielle Zwecke verwendet

2. DECIMAL kann Ganzzahlen außerhalb des BIGINT-Bereichs speichern

3. FLOAT und DOUBLE verwenden Standard-Gleitkommaoperationen für Näherungsberechnungen

char und varchar

1. char hat eine feste Länge, varchar hat eine variable Länge, d. h. varchar spart Platz (sofern es nicht mit ROW-FORMAT=FIXED erstellt wurde)

2. Da varchar eine variable Länge hat, wird zusätzliche Arbeit geleistet, wenn die Länge während des UPDATE größer wird

3. Verwenden Sie varchar, wenn: die maximale Länge einer Zeichenfolgenspalte viel größer als die durchschnittliche Länge ist; die Spalte selten aktualisiert wird (Fragmentierung also kein Problem darstellt); ein Zeichensatz wie UTF8 verwendet wird (jedes Zeichen wird mit einer anderen Anzahl von Bytes gespeichert)

4. CHAR ist geeignet für: sehr kurz oder alle Werte sind nahezu gleich lang (z. B. MD5); Spalten ändern sich häufig

5. Problem mit nachstehenden Leerzeichen: Die höhere Version von varchar behält nachstehende Leerzeichen bei; die Versionen char und varchar einer niedrigeren Version entfernen nachstehende Leerzeichen.

6. In CHAR (N) und VARCHAR (N) stellt N die Anzahl der Zeichen dar, nicht die Anzahl der Bytes (chinesische Zeichen belegen 3 Bytes in UTF8).

7. Obwohl der Datentyp VARCHAR(N) die Größe der Zeichenfolge, die er darstellt, auf der Festplatte speichert, weist ihm der Speicher beim Einlesen in den Speicher N*k+1or2 (N<=255,1;sonst 2;) zu (k wird durch den Zeichensatz bestimmt).

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Stapelweises Ersetzen eines Teils der Daten eines Felds in MySQL (empfohlen)
  • mysql ersetzt einen Teil des Feldinhalts und mysql ersetzt die Funktion replace()
  • Zwei Abfragemethoden, wenn der MySQL-Abfragefeldtyp JSON ist
  • MySQL-Gruppierungsmethode für die Gruppierungssequenz einzelner Wörter und die Gruppierung mehrerer Felder
  • Sollten nullbare Felder in MySQL auf NULL oder NOT NULL gesetzt werden?
  • Der Unterschied zwischen den Feldtypen char, varchar und Text in MySQL
  • Analyse, wie eine gespeicherte Prozedur in MySQL erstellt wird, um einer Datentabelle neue Felder hinzuzufügen
  • MySQL SQL-Anweisung zum Suchen doppelter Daten basierend auf einem oder mehreren Feldern

<<:  Detaillierte Erläuterung der Konzepte und Verwendung von Docker Swarm

>>:  Vue implementiert die Methode zur Anzeige des Prozentsatzes der Echart-Kreisdiagrammlegende

Artikel empfehlen

Util-Modul im node.js-Tutorial-Beispiel – detaillierte Erklärung

Inhaltsverzeichnis Ausgehend von der Typbeurteilu...

Detaillierte Erklärung zur Verwendung der Vue-Nummernschild-Eingabekomponente

Eine einfache Nummernschild-Eingabekomponente (vu...

Vue implementiert die Funktionen Vergrößern, Verkleinern und Ziehen

In diesem Artikelbeispiel wird der spezifische Co...

jQuery implementiert die Drop-Down-Box zur Auswahl des Wohnortes

Der spezifische Code für die Verwendung von jQuer...

vue.config.js Verpackungsoptimierungskonfiguration

Die Informationen auf Baidu sind so vielfältig, d...

js, um einen interessanten Countdown-Effekt zu erzielen

js interessanter Countdown-Fall. Zu Ihrer Informa...

Vue3.x verwendet mitt.js für die Komponentenkommunikation

Inhaltsverzeichnis Schnellstart Anwendung Grundpr...

Ausführliches Tutorial zu Installations- und Upgradeproblemen bei MySQL 5.7.30

Keil Da auf dem Computer eine relativ alte MySQL-...