Frage

Form wikipedia: http://en.wikipedia.org/wiki/Index_ ( Datenbank)

Einige Datenbanken erweitern die Macht der Indizierung von Indizes ermöglicht auf Funktionen oder Ausdrücke erstellt werden. Zum Beispiel könnte ein Index für obere (last_name) erstellt werden, die nur die oberen Gehäusevarianten des last_name-Feldes im Index gespeichert werden sollten. Eine weitere Option manchmal unterstützt wird, ist die Verwendung von „gefiltert“ Indizes, bei denen Indexeinträge erstellt werden, nur für die Datensätze, die etwas bedingten Ausdruck erfüllen. Ein weiterer Aspekt der Flexibilität ist die Indizierung auf benutzerdefinierte Funktionen zu ermöglichen, sowie Ausdrücke aus einem Sortiment von integrierten Funktionen gebildet werden.

Was sind die Datenbanken, die flexible Indizes unterstützen, die sein kann:

  • Auf berechnete Spalte wie: (col1 + col2) * 100
  • gefilterten Indizes.
  • Indizierung auf benutzerdefinierte Funktionen.

und was bekannt Terminologie für diese Funktion?

War es hilfreich?

Lösung

In Orakel sie Funktion basierte Indizes genannt.

Für das Filtern Sie schwierig sein kann und eine Funktion erstellen, die den Wert, wenn die Filterübereinstimmungen oder null zurückgibt, wenn es nicht der Fall ist. Nulls sind nicht in btree Indizes gespeichert, so dass der Index gefiltert wird, im Wesentlichen. Sie müssen nur sicherstellen, dass Sie die gleiche Funktion in Ihren Abfragen verwenden.

Ich glaube, Sie in SQL Server eine berechnete Spalte und Index, erstellen können.

Andere Tipps

SQL Server 2000+ (mindestens) unterstützt Indizes für funktionsbasierte Spalten und berechnete Spalten. Indizes auf Funktionen können über indizierte Sichten auf Funktionen repliziert werden.

Es gibt Bedingungen, wie immer, aber in erster Linie um Determinismus (was wahrscheinlich ist universell)

SQL Server 2008+ hat gefilterten Indizes.

AFAIK gibt es keinen speziellen Begriff. Sie sind nur Indizes.

Soweit ich weiß, alle wichtigen RDBSS unterstützen diese Funktion. Ich habe persönlich verwenden es auf MySQL und PostgreSQL, aber ich würde schockiert, wenn es in MSSQL und Oracle nicht verfügbar ist.

Leider habe ich kenne keinen speziellen Begriff für diese.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top