OrientDB-인덱스
Index 데이터베이스에서 데이터의 위치를 가리키는 포인터입니다. Indexing데이터베이스의 모든 레코드를 검색하지 않고도 데이터를 빠르게 찾는 데 사용되는 개념입니다. OrientDB는 4 개의 인덱스 알고리즘과 각각의 여러 유형을 지원합니다.
네 가지 유형의 인덱스는-
SB- 트리 인덱스
다른 인덱스 유형에서 사용할 수있는 다양한 기능을 제공합니다. 일반적인 유틸리티에 이것을 사용하는 것이 좋습니다. 내구성이 있고 트랜잭션이 가능하며 범위 쿼리를 지원합니다. 기본 색인 유형입니다. 이 알고리즘을 지원하는 다른 유형의 플러그인은 다음과 같습니다.
UNIQUE−이 인덱스는 중복 키를 허용하지 않습니다. 복합 색인의 경우 이는 복합 키의 고유성을 나타냅니다.
NOTUNIQUE −이 색인은 중복 키를 허용합니다.
FULLTEXT−이 색인은 텍스트의 단일 단어를 기반으로합니다. 다음을 통해 쿼리에서 사용할 수 있습니다.CONTAINSTEXT 운영자.
DICTIONARY − 이러한 인덱스는 UNIQUE를 사용하는 인덱스와 유사하지만 중복 키의 경우 기존 레코드를 새 레코드로 대체합니다.
해시 인덱스
성능이 더 빠르고 디스크 사용량이 매우 적습니다. 내구성이 있고 트랜잭션이 가능하지만 범위 쿼리를 지원하지 않습니다. HASHMAP처럼 작동하므로 정확한 조회가 빨라지고 다른 인덱스 유형보다 리소스를 적게 소비합니다. 이 알고리즘을 지원하는 다른 유형의 플러그인은 다음과 같습니다.
UNIQUE_HASH_INDEX−이 인덱스는 중복 키를 허용하지 않습니다. 복합 색인의 경우 이는 복합 키의 고유성을 나타냅니다.
NOTUNIQUE_HASH_INDEX −이 색인은 중복 키를 허용합니다.
FULLTEXT_HASH_INDEX−이 색인은 텍스트의 단일 단어를 기반으로합니다. CONTAINSTEXT 연산자를 통해 쿼리에서 사용할 수 있습니다.
DICTIONARY_HASH_INDEX −이 인덱스는 사용하는 인덱스와 유사합니다. UNIQUE_HASH_INDEX그러나 중복 키의 경우 기존 레코드를 새 레코드로 바꿉니다.
Lucene 전체 텍스트 색인
좋은 전체 텍스트 인덱스를 제공하지만 다른 유형을 인덱싱하는 데 사용할 수 없습니다. 내구성 있고 트랜잭션 가능하며 범위 쿼리를 지원합니다.
Lucene 공간 색인
좋은 공간 인덱스를 제공하지만 다른 유형을 인덱싱하는 데 사용할 수 없습니다. 내구성 있고 트랜잭션 가능하며 범위 쿼리를 지원합니다.
인덱스 생성
인덱스 생성은 특정 스키마에 인덱스를 생성하는 명령입니다.
다음 문은 인덱스를 생성하는 기본 구문입니다.
CREATE INDEX <name> [ON <class-name> (prop-names)] <type> [<key-type>]
[METADATA {<metadata>}]
다음은 위 구문의 옵션에 대한 세부 정보입니다.
<name>− 인덱스의 논리적 이름을 정의합니다. <class.property> 표기법을 사용하여 스키마 속성에 바인딩 된 자동 인덱스를 만들 수도 있습니다. <class>는 스키마의 클래스를 사용하고 <property>는 클래스에서 생성 된 속성을 사용합니다.
<class-name>− 색인을 생성 할 자동 색인을 생성하는 클래스의 이름을 제공합니다. 이 클래스는 데이터베이스에 있어야합니다.
<prop-names>− 자동 색인이 인덱싱 할 속성 목록을 제공합니다. 이러한 속성은 스키마에 이미 있어야합니다.
<type> − 생성하고자하는 알고리즘 및 인덱스 유형을 제공합니다.
<key-type> − 자동 인덱스가있는 선택적 키 유형을 제공합니다.
<metadata> − JSON 표현을 제공합니다.
예
사용자 sales_user의 속성 'ID'에 바인딩 된 자동 인덱스를 만들려면 다음 쿼리를 시도하십시오.
orientdb> CREATE INDEX indexforID ON sales_user (id) UNIQUE
위 쿼리가 성공적으로 실행되면 다음과 같은 출력이 표시됩니다.
Creating index...
Index created successfully with 4 entries in 0.021000 sec(s)
인덱스 쿼리
선택 쿼리를 사용하여 인덱스의 레코드를 가져올 수 있습니다.
다음 쿼리를 시도하여 'indexforId'라는 인덱스의 키를 검색하십시오.
SELECT FROM INDEX:indexforId
위 쿼리가 성공적으로 실행되면 다음과 같은 출력이 표시됩니다.
----+------+----+-----
# |@CLASS|key |rid
----+------+----+-----
0 |null |1 |#11:7
1 |null |2 |#11:6
2 |null |3 |#11:5
3 |null |4 |#11:8
----+------+----+-----
인덱스 삭제
특정 인덱스를 삭제하려는 경우이 명령을 사용할 수 있습니다. 이 작업은 연결된 레코드를 제거하지 않습니다.
다음 문은 인덱스를 삭제하는 기본 구문입니다.
DROP INDEX <name>
어디 <name> 삭제할 인덱스의 이름을 제공합니다.
사용자 sales_user의 'ID'라는 인덱스를 삭제하려면 다음 쿼리를 시도하십시오.
DROP INDEX sales_users.Id
위 쿼리가 성공적으로 실행되면 다음과 같은 출력이 표시됩니다.
Index dropped successfully