OrientDB - indeksy

Index to wskaźnik, który wskazuje lokalizację danych w bazie danych. Indexingto koncepcja używana do szybkiego lokalizowania danych bez konieczności przeszukiwania każdego rekordu w bazie danych. OrientDB obsługuje cztery algorytmy indeksowania i kilka typów w każdym.

Cztery typy indeksów to -

Indeks drzewa SB

Zapewnia dobre połączenie funkcji dostępnych z innych typów indeksów. Lepiej użyć tego do ogólnej użyteczności. Jest trwały, transakcyjny i obsługuje zapytania zakresowe. Jest to domyślny typ indeksu. Różne wtyczki obsługujące ten algorytm to -

  • UNIQUE- Te indeksy nie zezwalają na zduplikowane klucze. W przypadku indeksów złożonych odnosi się to do niepowtarzalności kluczy złożonych.

  • NOTUNIQUE - Te indeksy zezwalają na zduplikowane klucze.

  • FULLTEXT- Te indeksy są oparte na każdym pojedynczym słowie tekstu. Możesz ich używać w zapytaniach za pośrednictwemCONTAINSTEXT operator.

  • DICTIONARY - Te indeksy są podobne do tych, które używają UNIQUE, ale w przypadku zduplikowanych kluczy zastępują istniejący rekord nowym rekordem.

Hash Index

Działa szybciej i jest bardzo lekki w użyciu na dysku. Jest trwały, transakcyjny, ale nie obsługuje zapytań o zakres. Działa jak HASHMAP, dzięki czemu jest szybszy w punktowych wyszukiwaniach i zużywa mniej zasobów niż inne typy indeksów. Różne wtyczki obsługujące ten algorytm to -

  • UNIQUE_HASH_INDEX- Te indeksy nie zezwalają na zduplikowane klucze. W przypadku indeksów złożonych odnosi się to do niepowtarzalności kluczy złożonych.

  • NOTUNIQUE_HASH_INDEX - Te indeksy zezwalają na zduplikowane klucze.

  • FULLTEXT_HASH_INDEX- Te indeksy są oparte na każdym pojedynczym słowie tekstu. Możesz ich używać w zapytaniach za pomocą operatora CONTAINSTEXT.

  • DICTIONARY_HASH_INDEX - Te indeksy są podobne do tych, które używają UNIQUE_HASH_INDEX, ale w przypadku zduplikowanych kluczy zastępują istniejący rekord nowym rekordem.

Indeks pełnotekstowy Lucene

Zapewnia dobre indeksy pełnotekstowe, ale nie można go używać do indeksowania innych typów. Jest trwały, transakcyjny i obsługuje zapytania o zakres.

Indeks przestrzenny Lucene

Zapewnia dobre indeksy przestrzenne, ale nie może być używany do indeksowania innych typów. Jest trwały, transakcyjny i obsługuje zapytania o zakres.

Tworzenie indeksów

Utwórz indeks to polecenie tworzenia indeksu w określonym schemacie.

Poniższa instrukcja przedstawia podstawową składnię do tworzenia indeksu.

CREATE INDEX <name> [ON <class-name> (prop-names)] <type> [<key-type>] 
[METADATA {<metadata>}]

Poniżej znajdują się szczegółowe informacje na temat opcji w powyższej składni.

<name>- definiuje logiczną nazwę indeksu. Możesz również użyć notacji <class.property>, aby utworzyć automatyczny indeks powiązany z właściwością schematu. <class> używa klasy schematu, a <property> używa właściwości utworzonej w klasie.

<class-name>- Podaje nazwę klasy, dla której tworzysz automatyczny indeks do indeksowania. Ta klasa musi istnieć w bazie danych.

<prop-names>- Zawiera listę właściwości, które mają być indeksowane przez automatyczny indeks. Te właściwości muszą już istnieć w schemacie.

<type> - Zapewnia algorytm i typ indeksu, który chcesz utworzyć.

<key-type> - Zapewnia opcjonalny typ klucza z automatycznymi indeksami.

<metadata> - Zapewnia reprezentację JSON.

Przykład

Spróbuj wykonać następujące zapytanie, aby utworzyć automatyczny indeks powiązany z właściwością „ID” użytkownika sales_user.

orientdb> CREATE INDEX indexforID ON sales_user (id) UNIQUE

Jeśli powyższe zapytanie zostanie wykonane pomyślnie, otrzymasz następujące dane wyjściowe.

Creating index... 
Index created successfully with 4 entries in 0.021000 sec(s)

Zapytania o indeksy

Możesz użyć zapytania wybierającego, aby pobrać rekordy w indeksie.

Spróbuj wykonać następujące zapytanie, aby pobrać klucze indeksu o nazwie „indexforId”.

SELECT FROM INDEX:indexforId

Jeśli powyższe zapytanie zostanie wykonane pomyślnie, otrzymasz następujące dane wyjściowe.

----+------+----+----- 
#   |@CLASS|key |rid   
----+------+----+----- 
0   |null  |1   |#11:7 
1   |null  |2   |#11:6 
2   |null  |3   |#11:5 
3   |null  |4   |#11:8 
----+------+----+-----

Upuść indeksy

Jeśli chcesz usunąć określony indeks, możesz użyć tego polecenia. Ta operacja nie usuwa połączonych rekordów.

Poniższa instrukcja przedstawia podstawową składnię do usuwania indeksu.

DROP INDEX <name>

Gdzie <name> zawiera nazwę indeksu, który chcesz usunąć.

Spróbuj wykonać następujące zapytanie, aby usunąć indeks o nazwie „ID” użytkownika sales_user.

DROP INDEX sales_users.Id

Jeśli powyższe zapytanie zostanie wykonane pomyślnie, otrzymasz następujące dane wyjściowe.

Index dropped successfully