필드 a와 b를 필터링하고 c를 순서화하는 쿼리가있는 경우 a, b 및 c에 대해 별도의 인덱스를 작성해야합니까, 아니면 실제로 (a, b, c)의 복합 인덱스를 작성해야합니까?)? 또한 쿼리의 시퀀스가 인덱스의 시퀀스와 일치해야합니까? 즉, 쿼리의 필터 시퀀스가 필터 b이고, 필터 c이고,이어서 a의 순서라면, (b, c, a)의 복합 인덱스를 갖는 것이 더 좋을까요?MongoDB에서 인덱스를 만들 때 선택해야하는 필드는 무엇입니까?
2
A
답변
2
현재 MongoDB는 쿼리 당 하나의 인덱스 만 사용하므로 복합 인덱스가 필요합니다.
인덱스 매개 변수의 순서는 문제는 아니지만 질문에 언급 된 방식과 관계 없습니다.
인덱스가 (c, b, a)이면 필터링에 유용하지 않으므로 특히 컬렉션에 많은 항목이있는 경우 필터링이 유용하지 않습니다. 정렬에 사용되는 필드는 인덱스의 마지막에 지정해야합니다.
따라서 색인은 (a, b, c) 또는 (b, a, c) 중 하나 여야합니다. 그 중 어느 쪽이 좋을까요 선택도에 달려 있습니다. 즉, 어느 필드가 더 빨리 일치하지 않는 항목을 제거 할 것입니까?
b에 대해 10,000 개의 가능한 값이 있고 a에 대해 가능한 값이 두 개인 경우 인덱스는 (b, a, c) 여야합니다. 반대로, a에 대해 더 많은 가능한 값이있는 경우, 아마도 (a, b, c)이어야합니다. 두 필드가 질의에서 문서를 제거하는 능력이 거의 같으면 그다지 중요하지 않습니다.
1
이 모든 내용은 docs에 응답됩니다. 복합 색인에 대한 절을 참조하십시오.
쿼리 매개 변수의 순서는 중요하지 않습니다.
관련 문제
- 1. MongoDB에서 중첩 인덱스를 만드는 방법은 무엇입니까?
- 2. mongodb에서 인덱스를 관리하는 방법
- 3. MongoDB에서 인덱스를 위해 IndexDirection을 지정하는 목적은 무엇입니까?
- 4. Java 드라이버를 통해 MongoDB에서 복합 인덱스를 만드는 방법은 무엇입니까?
- 5. 장고 : 인덱스를 만들 :
- 6. 인덱스를 만들 때 INCLUDE 절을 사용해야하는 이유는 무엇입니까?
- 7. 필사본을 위해 선택해야하는 인코딩은 무엇입니까?
- 8. mongodb에서 연결을 끊을 때
- 9. XSL 변환을 선택해야하는 이유는 무엇입니까?
- 10. 인덱스에 인덱스를 만들 수 있습니까?
- 11. 문자열의 액세스 필드는 무엇입니까?
- 12. 컬렉션에서 JQuery 요소를 다시 선택해야하는 이유는 무엇입니까?
- 13. WCF - 스레드에서 현지화를 적용 할 때 선택해야하는 확장 점은 무엇입니까?
- 14. mongodb에서 중첩 해시의 성능에 미치는 영향은 무엇입니까?
- 15. 때 일부 필드는 필드 길이
- 16. mongodb에서 쿼리하는 방법은 무엇입니까?
- 17. MongoDB에서 지형 공간 인덱스를 생성하는 중 오류가 발생했습니다.
- 18. MongoDB의 "__v"필드는 무엇입니까?
- 19. gData의 baseuri 필드는 무엇입니까
- 20. 사전 ADT를 선택해야하는 경우
- 21. azure localDb에서 내보내기가 인덱스를 만들 수 없습니다.
- 22. MongoDB에서 색인 생성이란 무엇입니까?
- 23. mongodb에서 명령의 목적은 무엇입니까?
- 24. 설정 필드는
- 25. 색인을 생성하는 데 필요한 필드는 무엇입니까?
- 26. 이 HTML 양식 필드는 무엇입니까?
- 27. EF4.1에서 DB를 만들 때만 인덱스를 만들 수 있습니까?
- 28. 병합 문제 : 병합을 선택해야하는 개정 본은 무엇입니까?
- 29. 값을 선택해야하는 유효성 확인 구문은 무엇입니까?
- 30. IsInRole()보다 PrincipalPermission을 선택해야하는 이유는 무엇입니까?
특히 일부는 필터링에 사용되는 경우와 일부는 주문할 때 인덱스의 필드 순서가 중요합니다. –
인덱스 필드의 순서는 대답에서 설명하는대로 중요하지만 쿼리 매개 변수의 순서는 중요하지 않습니다. 색인 {a : 1, b : 1}이 주어지면 {b : "hi", a : 23}는 해당 색인을 사용합니다. –
지역 필드가있는 경우 (C 가정) 쿼리가 다음과 같이 표시되는 경우 - find (c 인근 point1, a> 5) .sort (b)? (c : 2d, a : 1, b : 1)의 복합 색인이 작동하고 색인의 c, a, b 순서가 조회에 적합한 최상의 순서가됩니까? – tom