Eine kurze Diskussion über die Berechnungsmethode von key_len in MySQL erklären

Eine kurze Diskussion über die Berechnungsmethode von key_len in MySQL erklären

Mit dem MySQL-Befehl „explain“ können Sie die Leistung von SQL analysieren. Eine davon ist die Statistik key_len (Indexlänge). In diesem Artikel wird die Berechnungsmethode von key_len in MySQL analysiert und erläutert.

1. Testtabellen und Daten erstellen

CREATE TABLE `Mitglied` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(20) DEFAULT NULL,
 `Alter` tinyint(3) unsigned DEFAULT NULL,
 Primärschlüssel (`id`),
 SCHLÜSSEL `Name` (`Name`)
)ENGINE=InnoDB STANDARD-CHARSET=utf8;

INSERT INTO `Mitglied` (`ID`, `Name`, `Alter`) VALUES (NULL, 'fdipzone', '18'), (NULL, 'Jim', '19'), (NULL, 'Tom', '19');

2. Ansicht erklären

Der Name-Feldtyp ist varchar(20) , die Zeichenkodierung ist utf8 und ein Zeichen belegt 3 Bytes, also sollte key_len 20*3=60 sein.

mysql> erläutern Sie „select * from ‚member‘ where name=‚fdipzone‘;“
+----+----------+--------+------+---------------+------+---------+---------+-------+------+---------------------------+
| ID | Auswahltyp | Tabelle | Typ | mögliche Schlüssel | Schlüssel | Schlüssellänge | Ref. | Zeilen | Extra |
+----+----------+--------+------+---------------+------+---------+---------+-------+------+---------------------------+
| 1 | SIMPLE | Mitglied | Ref | Name | Name | 63 | const | 1 | Indexbedingung verwenden |
+----+----------+--------+------+---------------+------+---------+---------+-------+------+---------------------------+

Die key_len von Explain beträgt 63 , also 3 mehr.

Das Namensfeld lässt NULL zu. Ändern Sie den Namen in NOT NULL und testen Sie erneut.

ALTER TABLE `Mitglied` CHANGE `Name` `Name` VARCHAR(20) NOT NULL;

mysql> erläutern Sie „select * from ‚member‘ where name=‚fdipzone‘;“
+----+----------+--------+------+---------------+------+---------+---------+-------+------+---------------------------+
| ID | Auswahltyp | Tabelle | Typ | mögliche Schlüssel | Schlüssel | Schlüssellänge | Ref. | Zeilen | Extra |
+----+----------+--------+------+---------------+------+---------+---------+-------+------+---------------------------+
| 1 | SIMPLE | Mitglied | Ref | Name | Name | 62 | const | 1 | Indexbedingung verwenden |
+----+----------+--------+------+---------------+------+---------+---------+-------+------+---------------------------+

Jetzt beträgt key_len 62, das ist 1 weniger als zuvor, aber immer noch 2 mehr. Es ist sicher, dass ein NULL-Feld ein zusätzliches Byte belegt.

Der Feldtyp „Name“ ist varchar, also ein Feld mit variabler Länge. Ändern Sie varchar in char und testen Sie erneut.

ALTER TABLE `Mitglied` CHANGE `Name` `Name` CHAR(20) NOT NULL;

mysql> erläutern Sie „select * from ‚member‘ where name=‚fdipzone‘;“
+----+----------+--------+------+---------------+------+---------+---------+-------+------+---------------------------+
| ID | Auswahltyp | Tabelle | Typ | mögliche Schlüssel | Schlüssel | Schlüssellänge | Ref. | Zeilen | Extra |
+----+----------+--------+------+---------------+------+---------+---------+-------+------+---------------------------+
| 1 | SIMPLE | Mitglied | Ref | Name | Name | 60 | const | 1 | Indexbedingung verwenden |
+----+----------+--------+------+---------------+------+---------+---------+-------+------+---------------------------+

Nach dem Wechsel zu einem Feld mit fester Länge beträgt key_len 60 , was mit der Vorhersage übereinstimmt.

Zusammenfassung: Die Verwendung von Feldern mit variabler Länge erfordert zusätzliche 2 Bytes, und die Verwendung von NULL erfordert zusätzliches 1 Byte. Daher ist es für indizierte Felder am besten, Definitionen mit fester Länge und NOT NULL-Definitionen zu verwenden , um die Leistung zu verbessern.

Die obige kurze Erläuterung der Berechnungsmethode von key_len in MySQL ist der gesamte Inhalt, den der Herausgeber mit Ihnen teilt. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen.

Das könnte Sie auch interessieren:
  • Erläuterung der Bedeutung und Berechnungsmethode von key_len in MySQL

<<:  Beispiel für die Konfiguration mehrerer virtueller Hosts in nginx

>>:  Detaillierte Erläuterung von Beispielen für JS-Closure- und Garbage-Collection-Mechanismen

Artikel empfehlen

Detaillierte Erklärung der drei Möglichkeiten zum Festlegen von Rahmen in HTML

Drei Möglichkeiten zum Festlegen von Rahmen in HT...

Schritte zum Erstellen Ihres eigenen YUM-Repositorys

Einfach ausgedrückt lautet die IP der als Lager v...

So ändern Sie die IP-Einschränkungsbedingungen des MySQL-Kontos

Vorwort Kürzlich stieß ich bei der Arbeit auf ein...

Zwei Beispiele für die Verwendung von Symbolen in Vue3

Inhaltsverzeichnis 1. Verwenden Sie SVG 2. Verwen...

Implementierung von Socket-Optionen in der Linux-Netzwerkprogrammierung

Socket-Optionsfunktion Funktion: Methoden zum Les...

Detaillierte Einführung in die Mysql-Datumsabfrage

Abfrage des aktuellen Datums AKTUELLES DATUM AUSW...

Detaillierte Analyse der MySQL-Indizes

Vorwort Wir wissen, dass die Indexauswahl Aufgabe...

WiFi-Entwicklung | Einführung in die WiFi-Wireless-Technologie

Inhaltsverzeichnis Einführung in die WiFi-Wireles...

Semantische Webseiten XHTML semantische Auszeichnung

Ein weiterer wichtiger Aspekt bei der Trennung vo...

Three.js-Beispielcode zur Implementierung des Tautropfen-Animationseffekts

Vorwort Hallo zusammen, hier ist der CSS-Assisten...

Vue3 implementiert ein Beispiel für eine Nachrichtenkomponente

Inhaltsverzeichnis Komponentendesign Definieren d...

Teilen Sie 12 häufig verwendete Loader in Webpack (Zusammenfassung)

Inhaltsverzeichnis Vorwort Stillader CSS-Lader Sa...