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

Einige Tipps zur Verwendung von Less in Vue-Projekten

Inhaltsverzeichnis Vorwort 1. Stildurchdringung 1...

Beispiel für die Implementierung eines globalen Wasserzeichens in Vue

Inhaltsverzeichnis 1. Erstellen Sie eine Wasserze...

jQuery realisiert den Shuttle-Box-Effekt

In diesem Artikelbeispiel wird der spezifische Co...

Die Kombination und der Unterschied zwischen ENTRYPOINT und CMD im Dockerfile

Im vorherigen Artikel [Detaillierte Erläuterung v...

Beispiel zum Referenzieren von Umgebungsvariablen in Docker Compose

In einem Projekt müssen Sie häufig Umgebungsvaria...

Webdesigner sollten Webseiten unter drei Aspekten optimieren

<br />Mit der zunehmenden Bandbreite werden ...

In JavaScript integrierter Zeit- und Datumsformatierungsbeispielcode

1. Grundkenntnisse (Methoden von Datumsobjekten) ...

Importieren Sie die CSV-Datei mit Navicat in MySQL

In diesem Artikel wird der spezifische Code zum I...

Benutzerzentriertes Design

Ich wurde in letzter Zeit häufig zu einer offensi...

So fügen Sie schnell 10 Millionen Datensätze in MySQL ein

Ich habe gehört, dass es eine Interviewfrage gibt...

W3C Tutorial (11): W3C DOM Aktivitäten

Das Document Object Model (DOM) ist eine Plattfor...

So konvertieren Sie Chinesisch in HTML in UTF-8

In HTML kann die chinesische Phrase „學好好學“ als „學...