MongoDB 튜 토리 얼 색인 소개

1.색인 기초:
    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})
 

좋은 웹페이지 즐겨찾기