2016-05-02 10 views
0

Ich frage mich, welche Art von Operationen Indizes für ihren Vorteil verwenden.Welche Abfrageoperationen nutzen Indizes?

Offensichtlich funktioniert "wie" (ohne Mustervergleich) und "=" ziemlich gut. Ich denke, dass>, <,> =, < = wird auch die Vorteile von Indizes nutzen.

Aber gibt es andere Operationen, die Indizes nutzen?

Antwort

0

integrieren, wenn ich vermisse:

Join Indizes verwenden können.

Auch Sortiervorgänge können Indizes verwenden, siehe zum Beispiel: https://technet.microsoft.com/en-us/library/ms181154%28v=sql.105%29.aspx?f=255&MSPPError=-2147217396

Einzigartige Einschränkung prüft Index.

Fremdschlüssel wird Lookup auf Indexex.

+0

Können Sie zu diesem letzten Punkt eine Dokumentation bereitstellen? Bei SQL Server wird in den meisten Standardinstallationen die Groß-/Kleinschreibung nicht berücksichtigt, was bei einem bitweisen Vergleich nicht funktioniert. Und das beschäftigt sich nicht wirklich mit der Frage, ob ein Index verwendet werden kann oder nicht. – alroc

+0

@alroc Entschuldigung, machte meine Antwort bearbeiten, letzte Zeile war falsch. Ich hatte im Hinterkopf PostgreSQL (Frage ist nicht spezifisch), aber es kann Indizes auf Bi nur auf exakte Suche verwenden. –

0

Die meisten Operationen, die alle Daten beinhalten das Lesen aus Indizes profitieren.

Daten werden auf der Festplatte gespeichert. Wenn Sie versuchen, Daten ohne Verwendung eines Indexes abzurufen, wird eine lineare Suche mit einer durchschnittlichen Fallkomplexität von O (n/2) durchgeführt - was bedeutet, dass unter Berücksichtigung eines durchschnittlichen Falles eine halbe Million verglichen werden muss Datenpunkt aus einem Datensatz, der eine Million Datensätze enthält. Wenn Sie jedoch einen Index verwenden, bringen Sie ihn auf O (log (n)) herunter. Ist hier ein Diagramm von http://bigocheatsheet.com/ all dies zu erklären:

enter image description here

Stellen Sie sich vor jeder Operation, die Sie tun - es kommt alles auf das Sortieren und Suchen. Es spielt keine Rolle, ob es sich um ein SELECT, ein UPDATE oder ein DELETE handelt.

Indizes zwar beschleunigen das System, aber das passiert nur, wenn Indizes mit Bedacht verwendet werden. In einer schreibgeschützten Master-Datenbank möchten Sie möglicherweise nicht viele Indizes, da jedes Mal, wenn Sie einen Datensatz einfügen, ein Overhead für die Neuberechnung des Indexes entsteht. Vielleicht möchten Sie auch nach sorgfältiger Prüfung Indizes auf den Slave setzen, da ein ALTER bei vielen Indizes sehr kostspielig ist. Sie müssen auch bedenken, dass Indizes Speicherplatz belegen, insbesondere Indizes für Textspalten.

Was die Frage zu LIKE:

LIKE auch Indizes verwenden, auch im Pattern-Matching, aber nur, wenn Sie tun:

LIKE "something%" 

Es wird nicht funktionieren, wenn Sie schreiben

LIKE "%something%" 

Pattern-Suche in relationalen Datenbanken ist keine sehr skalierbare Idee. Je nach Anwendungsfall möchten Sie möglicherweise ElasticSearch für die Verwendung zu Hause auswählen. Es gibt jedoch RDBMS, die Volltextfunktionalität bieten.

Verwandte Themen