SQLite Expressionsbasierter Index

SQLite Expressionsbasierter Index
In den SQLite- oder SQL -Datenbanken werden Indizes verwendet, um einige Spalten einer Tabelle zu verweisen. Diese Indizes können aus einer oder mehreren Spalten bestehen und können eindeutig sein. Darüber hinaus können wir Indizes für verschiedene Ausdrücke erstellen, die verschiedene Spalten einer beliebigen Tabelle enthalten. Diese Ausdrücke können in der Where -Bedingungsklausel der Auswahlanweisung definiert werden. Wir haben uns daher entschlossen, die Verwendung von Ausdrücken zu erklären, um Indizes zu erstellen und wie sie die Ergebnisse beeinflussen.

Beginnen wir mit diesem Artikel, indem wir das Shell -Terminal von Ubuntu 20 öffnen.04 schnell. Verwenden Sie dazu den Tiefpunkt „Strg+Alt+T“, um dies zu tun. Nach dem erfolgreichen Start des Shell -Terminals müssen Sie Ihr Linux -System mithilfe von Aktualisierungs- und Aktualisierungsbefehlen mit Hilfe eines APT -Pakets aktualisieren. Öffnen Sie danach die SQLite -Datenbank mit der Anweisung "SQLite3". Im Moment haben wir bisher keine Tabellen in der Datenbank, ich.e. Verwendung der .Tabellenbefehl.

Um die Indizes für Ausdrücke zu erstellen, benötigen wir eine Tabelle in unserer Datenbank. Wir haben eine neue Tabelle mit dem Namen "Detail" in unserer Datenbank erstellt, die insgesamt 3 Spalten vom Typ Ganzzahl enthält.e. Ausweis, Einzelhandel und Verkauf. Der Tisch ist gerade leer, ich.e. gemäß dem Befehl auswählen.

Tabellendetail erstellen (ID -Int -Primärschlüssel, nicht NULL, Einzelhandel int, Verkauf int);
Aus dem Detail auswählen;

Wir müssen einige Datensätze in der Detailtabelle hinzufügen, damit wir die Indizes in den Spalten danach erstellen können. Daher verwendeten wir die Anweisung Einfügen mit dem Schlüsselwort in Schlüsselwort, gefolgt vom Tabellennamen „Detail“ und der Spaltennamen „ID, Einzelhandel, Verkauf“. Auf die Spaltennamen folgen die Schlüsselwortwerte und die Datensätze, die in die Spalten eingefügt werden sollen. Wir haben insgesamt 10 Datensätze in drei Spalten dieser Tabelle eingefügt. Jeder ist einzigartig, wie gezeigt:

In Detail (ID, Einzelhandel, Verkauf) Werte (1, 340, 400) einfügen;
In Detail (ID, Einzelhandel, Verkauf) Werte (2, 380, 420) einfügen;
In Detail (ID, Einzelhandel, Verkauf) Werte (3, 205, 230) einfügen;
In Detail (ID, Einzelhandel, Verkauf) Werte (4, 98, 110) einfügen;
In Detail (ID, Einzelhandel, Verkauf) Werte (5, 311, 340) einfügen;
In Detail (ID, Einzelhandel, Verkauf) Werte (6, 100, 120) einfügen;
In Detail (ID, Einzelhandel, Verkauf) Werte (7, 512, 540) einfügen;
In Detail (ID, Einzelhandel, Verkauf) Werte (8, 634, 670) einfügen;
In Detail (ID, Einzelhandel, Verkauf) Werte (9, 54, 67) einfügen;
In Detail (ID, Einzelhandel, Verkauf) Werte (10, 934, 990) einfügen;

Nachdem wir den Anweisungen mit dem „*“ zum Anzeigen aller Spaltenaufzeichnungen aus der Detailtabelle verwenden konnten, haben wir die neu eingefügten 10 Datensätze in der Tabelle angezeigt.

Aus dem Detail auswählen;

Bevor wir einen Index für die Ausdrücke erstellen, werfen wir einen Blick auf die einfache Abfrage, um die Datensätze unter Verwendung von Ausdrücken abzurufen. Außerdem verwenden wir die Reihenfolge für die Option innerhalb der Abfrage, um die Ergebnisse gemäß der absteigenden Reihenfolge einer Länge eines Spaltenhandels zu organisieren. Insgesamt 8 Datensätze werden bisher auf unserem Bildschirm angezeigt.

Wählen Sie * aus Detail, wo Länge (Einzelhandel)> 2 Bestellung nach Länge (Einzelhandel) Desc;

Wir verwenden dieselbe Abfrage innerhalb der SQLite Query Planer -Anweisung, um zu sehen, wie der SQLite für die Ausführung dieser Abfrage funktioniert. Wir haben festgestellt, dass die gesamte Tabelle „Detail“ mit dem temporären B-Tree (ausgeglichener Baum) in der Bestellung nach Klausel scannen muss.

Erklären Sie den Abfrageplan aus, aus dem Detail, wo Länge (Einzelhandel)> 2 Bestellung nach Länge (Einzelhandel) Desc;

Erstellen wir einen Index für denselben Ausdruck „Länge“ in der Spalte Einzelhandel eines Tabellendetails. Wir verwenden den Anweisungen für Erstellen index, um den Index "Index_retail" zu erstellen, der erstellt hat.

Erstellen index_retail in detail (länge (Einzelhandel));

Nachdem wir den Index in der Detailtabelle erstellt hatten, verwendeten wir den Abfrageplaner, um die Arbeitsstruktur der Abfrage anzuzeigen. Es zeigt, dass die Abfrage am expressionsbasierten Index gearbeitet hat, um die erforderlichen Ergebnisse abzurufen, anstatt die gesamte Tabelle zu durchsuchen.

Erklären Sie den Abfrageplan aus, aus dem Detail, wo Länge (Einzelhandel)> 2 Bestellung nach Länge (Einzelhandel) Desc;

Nachdem die Anweisungen für denselben Ausdruck verwendet werden, um die Datensätze abzurufen.

Erstellen wir eine andere Auswahlabfrage mit einem Ausdruck. Diesmal zeigt der Ausdruck des Wehen der Klassen nur die Datensätze an, bei denen die Summe der Einzelhandels- und Verkaufsspalte größer als 700 ist.

Wählen Sie * aus Detail, wo Einzelhandel+Verkauf> 700;

Wir haben die vorherige Auswahlanweisung zusammen mit den einzelnen Spalten und dem Ausdruck „Retail+Sale> 700“ in der Anweisung Abfrageplaner verwendet. Das Ergebnis des Abfrageplaners zeigt, dass die SQLite -Datenbank über die gesamte Detailtabelle suchen muss, um die erforderlichen Ergebnisse mit diesem ziemlich ineffizienten Ausdruck zu erzielen.

Erläutern Sie Abfrageplan ausgewählte Ausweis, Einzelhandel, Verkauf, Einzelhandel+Verkauf aus Details, wo Einzelhandel+Verkauf> 700;

Erstellen wir einen neuen Index für den Ausdruck „Retail+Sale“, der in der vorherigen Auswahlanweisung verwendet wird. Daher haben wir den Anweisungen erstellen Index für den Ausdruck „Einzelhandel+Verkauf“ einer Detailtabelle generiert, um einen neuen Index „Index_detail“ zu generieren. Der neu gemachte Index "Index_Detail" ist in der Liste der Indizes gemäß der “zu sehen.Indizes Detail “Anweisung.

Erstellen index index_detail zum detail (Einzelhandel+Verkauf);

Probieren wir nun die Anweisung für Abfragenplaner für dieselbe Auswahlanweisung mit Einzelhandel+Verkauf> 700 Ausdrücke darin aus. Nachdem wir den Abfrageplaner verwendet hatten.

Erläutern Sie Abfrageplan ausgewählte Ausweis, Einzelhandel, Verkauf, Einzelhandel+Verkauf aus Details, wo Einzelhandel+Verkauf> 700;

Ändern wir den Ausdruck, indem wir die Namen der Spalten miteinander austauschen, ohne ihr Wissen zu ändern. Immer wenn Sie den gleichen Auswahlanweis mit der geringen Änderung des Ausdrucks verwenden, i.e. „Verkauf+Einzelhandel> 700“ zeigt die gleichen 5 Ergebnisse an, da die Logik korrekt ist und das gleiche in der vorherigen Auswahlanweisung verwendet wird.

Wählen Sie * aus Detail, wo Verkauf+Einzelhandel> 700;

Nachdem wir die zuvor geänderte Auswahlanweisung innerhalb der Anweisung des Abfrageplaners verwendet hatten. Dies liegt daran.

Erläutern Sie Abfrageplan ausgewählte Ausweis, Einzelhandel, Verkauf, Verkauf+Einzelhandel aus Detail, wo Verkauf+Einzelhandel> 700;

Abschluss

In diesem Artikel geht es darum, einen Index für verschiedene Ausdrücke zu erstellen. Wir haben versucht, den Anweisungen für Abfrageplaner zu verwenden, um die Differenz zwischen der Verwendung eines einfachen Ausdrucks innerhalb eines ausgewählten Befehls ohne Index und der Verwendung eines Ausdrucks innerhalb eines ausgewählten Befehls basierend auf einem Index zu erläutern.