Was ist eine Überdachte Index?
Ich habe nur den Begriff gehört bedeckt index in einige Datenbank-Diskussion - was bedeutet es?
InformationsquelleAutor Martynnw | 2008-09-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe nur den Begriff gehört bedeckt index in einige Datenbank-Diskussion - was bedeutet es?
InformationsquelleAutor Martynnw | 2008-09-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen abdeckenden index ist ein index, enthält alle, und vielleicht mehr, die Spalten, die Sie für Ihre Abfrage.
Zum Beispiel dieses:
wird in der Regel mit Indizes beschleunigen die Auflösung, welche Zeilen abrufen Kriterien, aber dann geht es zu der vollständigen Tabelle, um die Zeilen abzurufen.
Allerdings, wenn der index enthielt die Spalten column1, column2 und column3, dann diese sql:
und, vorausgesetzt, dass bestimmte index könnte verwendet werden, um die Geschwindigkeit der Auflösung, die Zeilen abzurufen, die der index enthält bereits die Werte der Spalten, die Sie interessiert, so dass Sie nicht haben, um an den Tisch gehen, um die Zeilen abzurufen, aber produzieren kann die Ergebnisse direkt aus dem index.
Diese können auch verwendet werden, wenn Sie sehen, dass eine typische Abfrage verwendet 1-2 Spalten zu beheben, die Zeilen, und dann in der Regel fügt noch 1-2 Spalten, könnte es von Vorteil sein, Anhängen, diese zusätzlichen Spalten (wenn Sie überall das gleiche) der index, so dass der query-Prozessor kann alles aus der index selbst.
Hier ist ein Artikel: Index-Covering Steigert SQL Server Query Performance auf das Thema.
Also, wenn ich abdeckende Indizes für col1, col2 und col3 als einen index, dann weiß ich eine Abfrage mit SP1, 2 und 3 wird schnell sein, aber was ist, wenn ich auch eine Abfrage mit nur col2 und col3? Wird es mit den abdeckenden index oder wird es ein full table scan? Sollte ich erstellen Sie eine separate Abdeckung-index für die Kombination von col2 und col3?
Beste Artikel, den ich gefunden habe, auf covered index ist: red-gate.com/simple-talk/sql/learn-sql-server/...
InformationsquelleAutor Lasse Vågsæther Karlsen
Abdeckenden index ist nur ein gewöhnlicher index. Es heißt "Abdeckung", wenn es erfüllen kann-Abfrage, ohne die Notwendigkeit, Daten zu analysieren.
Beispiel:
Dies ist eine der schnellsten Methoden zum abrufen von Daten aus SQL server.
Ihr Kommentar kann datenbankabhängig sein. Mein Verständnis ist, dass die meisten Datenbanken fügen Sie ein Zeile Lage, um die Adresse der Zeile auf einer Seite Speicher. Primärschlüssel ist eine logische id, nicht eine block-level-storage-Adresse. Wenn Ihre Aussage wahr wäre gäbe es keine Notwendigkeit für Primärschlüssel-Indizes-die tatsächlich Häufig erforderlich.
InformationsquelleAutor aku
Abdeckung Indizes sind Indizes, die die "Deckung" alle benötigten Spalten aus einer bestimmten Tabelle, entfernen die Notwendigkeit, den Zugriff auf die physische Tabelle in einer Abfrage/Bedienung.
Da der index enthält die gewünschten Spalten (oder eine Obermenge davon), Tabelle zugreifen kann ersetzt werden mit einem index lookup-oder scan-das ist in der Regel viel schneller.
Spalten decken:
Beim bespannen Indizes können oft gute Leistung abrufen, die Sie tun, fügen Sie etwas, um insert - /update-Aufwand; aus dem schreiben müssen zusätzliche oder größere Indexzeilen, die auf jedes update.
Abdeckung Indizes für verknüpfte Abfragen
Abdeckung Indizes sind wohl wertvoller als Leistung der Technik für verknüpfte Abfragen. Dies ist, weil verknüpfte Abfragen sind teurer & mehr wahrscheinlich einzigen-Tabelle Abfragen zu leiden, hohe Kosten für performance-Probleme.
Beispiel:
Finden Sie unter:
InformationsquelleAutor Thomas W
Können sagen, Sie haben eine einfache Tabelle mit den unten Spalten, Sie haben nur indizierte Id hier:
Stellen Sie sich vor Sie haben zum ausführen der folgenden Abfrage und prüfen, ob Ihr über index, und ob effizient ohne I/O-Aufrufe oder nicht. Denken Sie daran, Sie haben nur erstellt einen index auf
Id
.Beim check für die Leistung auf dieser Abfrage werden Sie enttäuscht, da
Telephone_Number
ist nicht indiziert dies muss für das abrufen von Zeilen aus der Tabelle mit I/O-Aufrufe. So, dies ist nicht eine Abdeckung indiziert, da gibt es einige Spalte in der Abfrage, die nicht indiziert ist, das führt zu häufigen I/O-Aufrufe.Machen es eine überdachte index erstellen Sie einen zusammengesetzten index für
(Id, Telephone_Number)
.Weitere Einzelheiten entnehmen Sie bitte diesem blog:
https://www.percona.com/blog/2006/11/23/covering-index-and-prefix-indexes/
InformationsquelleAutor JumpMan