MySQL Force Index

MySQL Force Index
Der besondere Wert in einem Tabellenfeld kann schnell mit einem Index durchsucht werden. Wenn in der Tabelle kein Index definiert ist, startet die Suche vom ersten Datensatz und stellt nicht mehr zu suchen, wo der Suchwert existiert. Wenn der Suchwert in der Tabelle nicht vorhanden ist, wird die Suche nach dem Iterieren des letzten Datensatzes gestoppt. Es ist sehr zeitaufwändig für den großen Tisch. MySQL verwendet Indizes für die Felder der Tabelle, um die Suche schneller zu gestalten. Der Abfrageoptimierer des MySQL -Servers ist eine nützliche Komponente, um die Ausführung der Abfrage durch die verfügbaren Statistiken zu optimieren. Wenn die Statistiken zeigen, dass der Suchwert in den meisten Datensätzen der Tabelle vorliegt, gibt es keinen Nutzen für die Verwendung des Index. Wenn die Statistiken zeigen, dass der Suchwert in einigen Tabellendatensätzen vorhanden ist, ist es vorteilhaft, den Index zu verwenden, um die Suche schneller zu gestalten. MySQL kann den Index erzwingen, wenn der Abfrageoptimierer den Index ignoriert.

Syntax:

Die Syntax des Kraftindex ist unten angegeben.

WÄHLEN *
Aus table_name
Force Index (index_list)
Wo Zustand;

Hier enthält die Index_List einen oder mehrere Spaltennamen des für die Suche verwendeten TABLE_NAME.

Voraussetzungen:

Sie müssen eine Datenbanktabelle mit Daten in einer MySQL -Datenbank erstellen, um die Kraftindexfunktion von MySQL zu überprüfen. Öffnen Sie das Terminal und verbinden Sie sich mit dem MySQL -Server, indem Sie den folgenden Befehl ausführen.

$ sudo mysql -u root

Führen Sie den folgenden Befehl aus, um eine Datenbank mit dem Namen zu erstellen test_db.

Datenbank erstellen test_db;

Führen Sie den folgenden Befehl aus, um die Datenbank auszuwählen.

Verwenden Sie test_db;

Führen Sie die folgende Anfrage aus, um eine Tabelle mit dem Namen zu erstellen Mitarbeiter mit fünf Feldern.

Erstellen Sie Tabelle 'Mitarbeiter' (
'id' int (11) auto_increment,
'Name' varchar (50) nicht null,
'post' varchar (25) nicht null,
'Joining_date' Datum nicht null,
'Gehalt' int nicht null,
Primärschlüssel (ID));

Führen Sie die folgende Einfügungsabfrage aus, um sechs Werte in die Tabelle der Mitarbeiter hinzuzufügen.

Einfügen in "Mitarbeiter" ("ID", "Name", "Post", "Joining_Date", "Gehalt") Werte
(Null, "Nur Jahan", "Assistant Manager", "2021-01-05", 78000),
(Null, 'Asif Iqbal', 'Manager', '2019-03-20', 56000),
(Null, 'Jafar Iqbal', 'Assistant Manager', '2021-12-31', '60000'),
(Null, 'Sefali Akter', 'Marketing Officer', '2022-01-01', '65000'),
(Null, 'Apurbo Chowdhury', 'CEO', '2013-05-15', '350000'),
(Null, 'Nirob Hasan', 'Manager', '2019-12-18', '58000');

Beispiel 1: Überprüfen Sie den Standardindex

Wenn eine Tabelle erstellt wird, wird der Primärschlüssel standardmäßig als Index definiert. Führen Sie den folgenden Befehl aus, um die aktuelle Indexliste der Mitarbeiter zu überprüfen.

Indizes von Mitarbeitern zeigen;

Ausgang:

Nach der Ausführung der obigen Abfrage wird die folgende Ausgabe angezeigt. Die Ausgabe zeigt, dass die Btree Index wurde für die zugewiesen Ausweis Feld der Mitarbeiter Tisch.

Wenn kein Index für die zugewiesen ist Gehalt Feld der Mitarbeiter Tabelle Nach dem Erstellen der Tabelle werden alle Datensätze der Tabelle vom Abfrageoptimierer für die folgende Abfrage gescannt. Der Erklären Das Schlüsselwort wird hier verwendet, um die Ausführungsinformationen der Abfrage auszuwählen.

Erklären Sie ausgewählte * von Mitarbeitern
Wo Gehalt> = 60000;

Ausgang:

Nach der Ausführung der obigen Abfrage wird die folgende Ausgabe angezeigt. Die Ausgabe zeigt, dass alle Zeilen erforderlich waren, um die Abfrage- und Filterdaten aus dem Mitarbeiter Tisch.

Beispiel 2: Überprüfen Sie die Ausführung der Abfrage nach dem Erstellen des Index

Sie müssen den Index für die definieren Gehalt Feld der Mitarbeiter Tabelle, um die Abfrage richtig zu optimieren. Führen Sie die folgende Abfrage aus, um den Index für die zu erstellen Gehalt Feld der Mitarbeiter Tisch.

Erstellen index index_salary über Mitarbeiter (Gehalt);

Führen Sie den folgenden Befehl erneut aus, um den aktuellen Indexstatus der Mitarbeitertabelle zu überprüfen.

Indizes von Mitarbeitern zeigen;

Ausgang:

Nach der Ausführung des obigen Befehls wird die folgende Ausgabe angezeigt. Die Ausgabe zeigt, dass jetzt zwei BTREE -Indizes in der Tabelle der Mitarbeiter vorhanden sind.

Führen Sie die vorherige Auswahlabfrage erneut aus, um die Ausführungsinformationen der Abfrage zu überprüfen. Die Ausgabe der Erklärungserklärung ist möglicherweise nicht genau für die Tabelle mit wenigen Datensätzen oder für verschiedene Ausführungen variieren. Es ist besser, große Datensätze in die Tabelle hinzuzufügen, um das ungefähr korrekte Ergebnis zu erzielen.

Erklären Sie ausgewählte * von Mitarbeitern
Wo Gehalt> = 60000;

Ausgang:

Nach der Ausführung der obigen Abfrage wird die folgende Ausgabe angezeigt. Die Ausgabe zeigt, dass 4 Zeilen erforderlich waren, um die Abfrage auszuführen und die Daten aus dem zu filtern Mitarbeiter Tisch. Nach der Ausgabe ist die Ausführungszeit der Abfrage die Ausführungszeit 0.04 Sekunden, die auf 4 Zeilen zugegriffen haben, um die Ausgabe zu erhalten.

Beispiel-3: Überprüfen Sie die Ausführung der Abfrage nach der Verwendung des Force Index

Der Abfrageoptimierer verwendet den definierten Index oder nicht, der vom Zustand der Abfrage, der Anzahl der Datensätze der Abfrage und der Anzahl der übereinstimmenden Zeilen der Tabelle basierend auf der Bedingung abhängt.

Führen Sie die folgende Anfrage aus, um den Abfrageoptimierer zu zwingen, um die zu verwenden Index_Salary Index zum Zeitpunkt der Abfrageausführung. Der Kraftsindex Die Anweisung wird vor der Klausel der Abfrage ausgewählt, um den Abfrageoptimierer zu zwingen Index_Salary Index.

Erklären Sie ausgewählte * von Mitarbeitern
Force Index (Index_Salary)
Wo Gehalt> = 60000;

Ausgang:

Nach der Ausführung der obigen Abfrage wird die folgende Ausgabe angezeigt. Die Ausgabe zeigt, dass 4 Zeilen erforderlich waren, um die Abfrage auszuführen und die Daten aus dem zu filtern Mitarbeiter Tisch. Nach der Ausgabe ist die Ausführungszeit der Abfrage die Ausführungszeit 0.00 Sekunden, die auf 4 Zeilen zugegriffen haben, um die Ausgabe zu erhalten. Diese Ausgabe kann auch für verschiedene Ausführungen variieren.

Abschluss:

Die Kraftindexfunktion von MySQL ist nützlich, wenn der jeweilige Wert in einer Tabelle gesucht wird, die eine große Anzahl von Datensätzen enthält. In diesem Tutorial wurde der Weg zum Erstellen eines Index für eine Tabelle für eine Tabelle und den Abfrageoptimierer zum Erstellen dieses Index zum Zeitpunkt der Ausführung der Abfrage durch die Anweisung der Kraftindex mit der Anweisung der Kraft index.