2013-10-06 1 views
0

아래 그림과 같이 java 응용 프로그램에 MongoDB를 사용하고 있습니다. 아래 그림과 같이 은 내가 아래 쿼리를 만드는 중이라서 :정렬 목적으로 쿼리에서 사용되는 필드의 인덱스를 생성합니까?

public Set<String> findDuplicateEquities() { 
BasicDBObject query = new BasicDBObject(); 
BasicDBObject sort = new BasicDBObject(); 
query.put("symbol", "SUNG"); 
sort.put("price", "1"); 
DBCursor cursor = collection.find(query).sort(sort); 

내가 또한 가격 필드의 인덱스를 작성해야합니까, 내가 종류 purpse을 위해 그것을 usng하고 같이?

답변

1

얼마나 많은 문서가 find({symbol:"SUNG"})에 의해 반환되는지에 따라 다릅니다. 수 많은 항목 만 반환되어 정렬해야하는 경우에는 신경 쓸 필요가 없습니다. 그러나이 쿼리가 수백 개의 문서 이상을 반환하면 가격을 포함한 복합 인덱스를 만드는 것이 도움이 될 수 있습니다. 그 이유는 항목이 이미 인덱스의 정렬 된 순서로 검색 될 수 있고 나중에 정렬 할 필요가 없기 때문입니다.

find(...).sort(...)의 속도를 높이는 색인은 find-query와 정확하게 일치하는 모든 필드와 올바른 순서로 정렬되는 필드로 시작하는 복합 색인이어야합니다. 방향. 자세한 내용은 the documentation about compound indexes을 참조하십시오.

관련 문제