Ausführliche Erläuterung der Auswirkungen von NULL auf Indizes in MySQL

Ausführliche Erläuterung der Auswirkungen von NULL auf Indizes in MySQL

Vorwort

Ich habe viele Blogs gelesen und von vielen Leuten, darunter auch dem DBA unseres Unternehmens, gehört, dass, wenn in MySql eine Spalte null enthält, der Index, der diese Spalte enthält, ungültig ist.

Ich habe „High Performance MySQL 2nd Edition“ und „MySQL Technology Insider – InnoDB Storage Engine 2nd Edition“ durchgeblättert, konnte aber keine Einführung hierzu finden. Aber nachdem ich es lokal ausprobiert hatte, stellte ich fest, dass die Nullspalte den Index verwenden kann, egal ob es sich um einen Einzelspaltenindex oder einen gemeinsamen Index handelt, aber sie ist auf „ist null“ beschränkt. „Ist nicht null“ verwendet den Index nicht.

Später fand ich in der offiziellen Dokumentation die Beschreibung, dass der Index tatsächlich verwendet werden kann, wenn eine Spalte null enthält. Die Adresse lautet: https://dev.mysql.com/doc/refman/5.7/en/is-null-optimization.html.

Es funktioniert sowohl in MySQL 5.6 als auch in 5.7 und die Speicher-Engine ist InnoDB.

Die Daten lauten wie folgt:

1. Einspaltiger Index

Erstellen Sie einen einzelnen Spaltenindex für die Spalte „Name“:

Fragen Sie die Zeilen ab, in denen der Name null ist:

Fragen Sie die Zeile ab, deren Name „test0“ oder null ist:

Sie können feststellen, dass Indizes verwendet werden können.

2. Gemeinsamer Index

Fügen Sie einen gemeinsamen Index für Alter und Name hinzu:


Fragen Sie die Zeilen ab, in denen das Alter 14 und der Name null ist:

Sie können feststellen, dass der Index auch verwendet wird.

3. Sonstiges

Obwohl MySQL Indizes für Spalten mit Nullen verwenden kann, bedeutet dies nicht, dass Nullen mit anderen Daten im Index identisch sind.

Es wird nicht empfohlen, Nullen in Spalten zuzulassen. Am besten beschränken Sie sich auf „nicht null“ und legen einen Standardwert fest, beispielsweise 0 und „leere Zeichenfolge“. Wenn es sich um einen Datums-/Uhrzeittyp handelt, können Sie ihn auf einen speziellen Wert wie „1970-01-01 00:00:00“ festlegen.

Für MySQL ist Null ein spezieller Wert. Konzeptionell bedeutet NULL „ein fehlender unbekannter Wert“ und wird etwas anders als andere Werte behandelt. Beispiele: Operatoren wie =, <, > können nicht verwendet werden, das Ergebnis von Rechenoperationen mit Null ist Null, Nullzeilen werden bei der Zählung nicht berücksichtigt, Null erfordert mehr Speicherplatz als eine leere Zeichenfolge usw.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • So entwerfen und optimieren Sie MySQL-Indizes
  • Eine kurze Diskussion über MySQL-Index-Designprinzipien und die Unterschiede zwischen gängigen Indizes
  • Teilen Sie einige wichtige Interviewfragen zum MySQL-Index
  • Was sind Ihre Grundsätze für die Gestaltung von Indizes? Wie lassen sich Indexfehler vermeiden?

<<:  Implementierungscode zur Installation von vsftpd in Ubuntu 18.04

>>:  Beispiele und Vergleich von 3 Methoden zur Deduplizierung von JS-Objekt-Arrays

Artikel empfehlen

Analyse des MySQL-Client-Installationsprozesses auf dem Mac

Versuchen Sie die Installation über Pip in einer ...

HTML löst das Problem ungültiger Tabellenbreiteneinstellungen

Wenn Sie den Stil „table-layer:fixed“ für eine Ta...

SQL GROUP BY ausführliche Erklärung und einfaches Beispiel

Die GROUP BY-Anweisung wird in Verbindung mit der...

Codebeispiel für die Verwendung der MySql COALESCE-Funktion

COALESCE ist eine Funktion, die sich nacheinander...

Detaillierte Erläuterung der MySql-Datentyp-Tutorialbeispiele

Inhaltsverzeichnis 1. Kurzübersicht 2. Detaillier...

Detaillierte Erklärung von Prototypen und Prototypenketten in JavaScript

Inhaltsverzeichnis Prototyp-Kettendiagramm Grundl...

Änderung des Zeitzonenproblems von MySQL-Containern in Docker

Vorwort Als Ahhang das Springboot-Projekt entwick...

Sprechen Sie über wichtige Unterverzeichnisprobleme im Linux-System

/etc/fstab Partitionen/Festplatten automatisch mo...

HTML verwendet reguläre Ausdrücke zum Testen von Tabellenbeispielen

Hier ist ein Beispielcode für die Verwendung regu...