MongoDB 튜 토리 얼 색인 소개
MongoDB 의 색인 은 거의 전통 적 인 관계 형 데이터 베이스 와 똑 같 는데 그 중에서 기본 적 인 최적화 기법 도 포함한다.다음은 색인 생 성 명령 입 니 다:
> db.test.ensureIndex({"username":1})
아래 의 이름 을 통 해 색인 이 성공 적 으로 만 들 어 졌 는 지 확인 할 수 있 습 니 다.
> db.test.getIndexes()
색인 삭제 명령 은:
> db.test.dropIndex({"username":1})
MongoDB 에서 도 다음 과 같은 복합 색인 을 만 들 수 있 습 니 다.
-- 1 username ,-1 age 。
> db.test.ensureIndex({"username":1, "age":-1})
이 색인 이 생 성 되면 username 과 age 를 기반 으로 한 검색 은 이 색인 을 사용 하거나 username 기반 검색 도 이 색인 을 사용 하지만 age 기반 검색 만 이 복합 색인 을 사용 하지 않 습 니 다.따라서 복합 색인 을 사용 하려 면 검색 조건 에 복합 색인 에 있 는 이전 N 개의 색인 열 을 포함해 야 한다 고 할 수 있다.그러나 검색 조건 의 키 순서 와 복합 색인 생 성 순서 가 일치 하지 않 으 면 MongoDB 는 복합 색인 이 검색 에 사용 할 수 있 도록 스마트 하 게 이 순 서 를 조정 할 수 있 습 니 다.예:
> db.test.find({"age": 30, "username": "stephen"})
위의 예제 에서 조회 조건 에 대해 MongoDB 는 검색 하기 전에 검색 조건 문서 의 순 서 를 동적 으로 조정 하여 방금 만 든 복합 색인 을 사용 할 수 있 도록 합 니 다.우 리 는 내 장 된 문서 에 색인 을 만 들 수 있 습 니 다.그 규칙 은 일반 문서 와 아무런 차이 가 없습니다.예 를 들 어:
> db.test.ensureIndex({"comments.date":1})
위 에서 만 든 색인 에 대해 MongoDB 는 색인 키 name 과 색인 방향 에 따라 새로 만 든 색인 이름 을 자동 으로 할당 합 니 다.아래 명령 은 색인 을 만 들 때 색인 이름 을 지정 할 수 있 습 니 다.예 를 들 어:
> db.test.ensureIndex({"username":1},{"name":"testindex"})
집합 이 증가 함 에 따라 조회 중의 대량의 정렬 에 대해 색인 을 만들어 야 한다.색인 키 에 sort 를 호출 하지 않 으 면 MongoDB 는 모든 데 이 터 를 메모리 로 추출 하고 정렬 해 야 합 니 다.따라서 색인 없 는 정렬 을 할 때 데이터 양 이 너무 많아 메모리 에서 정렬 할 수 없 으 면 MongoDB 가 오 류 를 보고 합 니 다.2.유일한 색인:
부족 한 상황 에서 만 든 색인 은 모두 유일한 색인 이 아니다.다음 예제 에 서 는 다음 과 같은 유일한 색인 을 만 들 것 입 니 다.
> db.test.ensureIndex({"userid":1},{"unique":true})
userid 가 중 복 된 문 서 를 다시 삽입 할 때 MongoDB 는 다음 과 같은 중복 키 삽입 을 알 리 기 위해 오 류 를 보고 합 니 다.
> db.test.insert({"userid":5})
> db.test.insert({"userid":5})
E11000 duplicate key error index: test.test.$userid_1 dup key: { : 5.0 }
삽 입 된 문서 에 userid 키 가 포함 되 어 있 지 않 으 면 이 문서 의 값 은 null 입 니 다.비슷 한 문 서 를 여러 번 삽입 하면 MongoDB 는 다음 과 같은 오 류 를 보고 합 니 다.
> db.test.insert({"userid1":5})
> db.test.insert({"userid1":5})
E11000 duplicate key error index: test.test.$userid_1 dup key: { : null }
유일한 색인 을 만 들 때 중복 항목 이 존재 한다 면 다음 명령 을 통 해 유일한 색인 을 만 들 때 중복 문 서 를 제거 하고 발 견 된 첫 번 째 문서 만 유지 할 수 있 습 니 다.예 를 들 어:--방금 만 든 유일한 색인 을 삭제 합 니 다.
> db.test.dropIndex({"userid":1})
-- , 。
> db.test.remove()
> db.test.insert({"userid":5})
> db.test.insert({"userid":5})
-- , 。
> db.test.ensureIndex({"userid":1},{"unique":true,"dropDups":true})
-- , 。
> db.test.find()
{ "_id" : ObjectId("4fe823c180144abd15acd52e"), "userid" : 5 }
우 리 는 복합 유일한 색인 을 만 들 수 있 습 니 다.즉,복합 키 값 이 유일 하 다 는 것 을 보증 하면 됩 니 다.예:
> db.test.ensureIndex({"userid":1,"age":1},{"unique":true})
3.explain 사용:explain 은 매우 유용 한 도구 로 조회 에 있어 서 많은 유용 한 정 보 를 얻 는 데 도움 을 줄 것 이다.커서 에 이 방법 을 호출 하면 세부 사항 을 조회 할 수 있다.explain 은 커서 자체 가 아 닌 문 서 를 되 돌려 줍 니 다.예:
> db.test.find().explain()
{
"cursor" : "BasicCursor",
"nscanned" : 1,
"nscannedObjects" : 1,
"n" : 1,
"millis" : 0,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
}
}
explain 은 조회 에 사용 되 는 색인 상황,시간 과 문서 수 를 스 캔 하 는 통계 정 보 를 되 돌려 줍 니 다."cursor":"Basic Cursor"는 색인 을 사용 하지 않 았 음 을 표시 합 니 다.
"nscanned":1 은 몇 개의 문 서 를 조 회 했 는 지 표시 합 니 다.
"n":1 되 돌아 오 는 문서 의 수 를 표시 합 니 다.
"millis":0 은 전체 조회 시간 을 표시 합 니 다.
4.색인 관리:
시스템.indexes 집합 에는 각 색인 에 대한 상세 한 정보 가 포함 되 어 있 기 때문에 아래 명령 을 통 해 이미 존재 하 는 색인 을 조회 할 수 있 습 니 다.예 를 들 어:
> db.system.indexes.find()
데이터 가 있 는 문서 에 색인 을 만 들 때 MongoDB 가 배경 에 색인 을 만 들 수 있 도록 아래 명령 을 실행 할 수 있 습 니 다.이 는 만 들 때 다른 작업 을 막 지 않 습 니 다.그러나 블록 방식 으로 색인 을 만 드 는 것 보다 전체 생 성 과정 을 효율 적 으로 만 들 수 있 지만 생 성 시 MongoDB 는 다른 작업 을 받 아들 일 수 없습니다.
> db.test.ensureIndex({"username":1},{"background":true})
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Weave Scope 다 중 호스트 모니터링 - 매일 5 분 씩 Docker 용기 기술 돌리 기 (81)이 host 아이콘 을 누 르 면 자세 한 정 보 를 표시 합 니 다. host 현재 자원 사용 현황 과 역사 곡선 이 한눈 에 들 어 옵 니 다.이외에 도 host 에서 실행 중인 프로 세 스 와 용기 목록 을 편...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.