Wie mit SQL-Indizes zu arbeiten

Die SQL-Spezifikation bezieht sich nicht auf das Thema der Indizes, aber das Versäumnis nicht bedeutet, dass Indizes sind selten oder sogar optionale Teile eines Datenbanksystems. Jede SQL-Implementierung unterstützt Indizes, aber Sie werden keine allgemeine Übereinstimmung finden, wie sie zu unterstützen.

Menu

Was ist ein Index?

Daten erscheinen in einer Tabelle in der Reihenfolge, in der die Informationen in SQL eingetragen. Diese Ordnung kann nichts mit dem zu tun, um in der Sie später die Daten verarbeitet werden sollen. Sagen Sie, dass Sie Ihren Kunden Tabelle bearbeiten wollen in Kundenname Auftrag. Der Computer muss sortiert werden zuerst die Tabelle in Kundenname Auftrag. Sortieren der Daten auf diese Weise braucht Zeit. Größere Tabellen länger dauern, zu sortieren.

Was ist, wenn Sie eine Tabelle mit 100.000 Zeilen haben? Oder eine Tabelle mit einer Million Zeilen? In einigen Anwendungen sind derartige Tischgrößen nicht selten. Die beste Art Algorithmen müssten rund 20 Millionen Vergleiche und Millionen von Swaps, um die Tabelle in der gewünschten Reihenfolge zu bringen. Auch wenn Sie einen sehr schnellen Computer verwenden, können Sie nicht so lange warten wollen.

Indizes können viel Zeit sparen. Ein Index ist eine Tochtergesellschaft oder Auflagetisch das geht zusammen mit einer Datentabelle. Für jede Zeile in der Datentabelle, haben Sie eine entsprechende Zeile in der Indextabelle. Die Reihenfolge der Zeilen in der Indextabelle unterscheidet.

KundennameAdresse 1Adresse 2StadtBundesland
Butternut Tierklinik5 Butternut Lane HudsonNH
Bernstein Veterinary, Inc.470 Kolvir Kreis BernsteinMI
Tierärzte R Us2300 Geoffrey StraßeSuite 230AnaheimCA
Hund Doktor32 Terry Terrasse NutleyNJ
Das Reitzentrumtierärztlich7890 Paddock ParkwayGallupNM
Dolphin Institute1002 Marine Drive Key WestFL
J. C. Campbell, Kredit Vet2500 Main Street Los AngelesCA
Wenger Worm Farm15 Bait Boulevard SedonaAZ

Hier werden die Zeilen sind nicht in alphabetischer Reihenfolge nach Kundenname. In der Tat sind sie überhaupt nicht in irgendeiner sinnvollen Reihenfolge. Die Zeilen sind einfach in der Reihenfolge, in der jemand die Daten eingegeben hat.

KundennameZeiger auf Datentabelle
Bernstein Veterinary, Inc.2
Butternut Tierklinik1
Hund Doktor4
Dolphin Institute6
J. C. Campbell, Kredit Vet7
Das Reitzentrum5
Tierärzte R Us3
Wenger Worm Farm8

Der Index enthält das Feld, das die Grundlage des Index (in diesem Fall, Kundenname) Und einen Zeiger in der Datentabelle. Der Zeiger in jedem Index Zeile gibt die Zeilennummer der entsprechenden Zeile in der Datentabelle.

Warum sollten Sie einen Index wollen

Wenn Sie eine Tabelle zu verarbeiten in Kundenname Ordnung, und Sie haben einen Index angeordnet Kundenname bestellen, können Sie Ihre Operation durchführen fast so schnell wie Sie können, wenn die Datentabelle selbst schon waren in Kundenname Auftrag. Sie können durch den Index arbeiten, bewegen sofort zu jedem entsprechenden Datensatz der Indexzeile durch den Zeiger im Index.

Wenn Sie einen Index verwenden, ist die Tabelle Verarbeitungszeit proportional zu N, woher N ist die Anzahl der Datensätze in der Tabelle. Ohne Index ist die Verarbeitungszeit für die gleiche Operation proportional N lg N, woher lg N ist der Logarithmus von N auf der Basis 2 Bei großen Tabellen ist der Unterschied groß. Einige Operationen sind nicht praktisch ohne die Hilfe von Indizes durchzuführen.

Angenommen, Sie haben eine Tabelle mit 1.000.000 Datensätze (N = 1.000.000), und jeder Datensatz Verarbeitung dauert eine Millisekunde (ein Tausendstel einer Sekunde). Wenn Sie einen Index haben, nimmt die gesamte Tabelle der Verarbeitung nur 1000 Sekunden - weniger als 17 Minuten.

Ohne einen Index, müssen Sie über den Tisch gehen etwa 1.000.000 x 20-mal das gleiche Ergebnis zu erzielen. Dieser Prozess würde 20.000 Sekunden dauern - mehr als fünfeinhalb Stunden. Der Unterschied zwischen 17 Minuten und fünfeinhalb Stunden ist beträchtlich.

Wie um einen Index zu halten

Nachdem Sie einen Index zu erstellen, müssen Sie es beibehalten. Glücklicherweise hält Ihr DBMS Ihre Indizes für Sie automatisch, indem sie jedes Mal aktualisieren Sie die entsprechenden Datentabellen zu aktualisieren. Dieser Vorgang dauert mehr Zeit, aber es lohnt sich. Wenn Sie einen Index und DBMS erstellen hält sie, ist der Index immer verfügbar, um Ihre Datenverarbeitung zu beschleunigen, egal wie oft Sie es nennen müssen.

Die beste Zeit, einen Index zu erstellen, ist zugleich Sie seine entsprechende Datentabelle erstellen. Versuchen Sie, alle Möglichkeiten zu antizipieren, die Sie möglicherweise auf Ihre Daten zugreifen, und dann einen Index erstellen für jede Möglichkeit.

Einige DBMS-Produkte geben Ihnen die Möglichkeit, die Indexwartung zu deaktivieren. Sie können so in einigen Echtzeit-Anwendungen zu tun wollen, wo Indizes Aktualisierung viel Zeit in Anspruch nimmt und Sie haben reichlich wenig zu schonen. Sie können sogar die Indizes als separater Betrieb während außerhalb der Spitzenzeiten zu aktualisieren wählen zu. Wie gewöhnlich, # 147-tun, was für Sie arbeitet 148- # die Regel.

Geraten Sie nicht in die Falle der einen Index für den Abruf Aufträge erstellen, die Sie wahrscheinlich nicht zu verwenden sind. Index Wartung ist eine zusätzliche Operation, die der Computer jedes Mal ausführen muss es das Indexfeld ändert oder hinzufügt oder löscht eine Datentabellenzeile - und dieser Vorgang beeinträchtigt die Leistung. Erstellen Sie nur die Indizes, die Sie erwarten, als Abrufschlüssel zu verwenden - und nur für Tabellen, die eine große Anzahl von Zeilen enthalten.

Sie können etwas wie einen monatlichen oder vierteljährlichen Bericht, der die Daten in einer ungeraden Ordnung erfordert, dass Sie normalerweise nicht brauchen zu kompilieren müssen. Erstellen Sie einen Index nur vor, dass die periodischen Bericht ausgeführt wird, den Bericht, und dann den Index löschen, so dass die DBMS nicht mit der Aufrechterhaltung des Index während der langen Zeit zwischen den Berichten belastet ist.

Menü