나는 약 500000 개의 데이터 세트가있는 콜렉션을 가지고 있으며, 임의의 데이터 세트를 찾고 싶습니다. find()를 customer-id로 제한하여 크기를 약 80000 세트로 줄일 수 있습니다. 인덱스도 고객 ID에 추가됩니다.MongoDB 임의의 데이터 세트 성능 찾기
이$mongoCursor = $mongoCollection->find($arrQuery, $arrFields)->skip(rand(1, $dataCount));
프로파일 러가 지금 이야기 :
는 PHP에서 나는 임의의 데이터 집합을 얻기 위해 다음 명령을 사용
DB.Collection ntoskip:3224 nscanned:3326 nreturned:101 reslen:77979 262ms
이 결과를 가져 오기 위해 꽤 많은 시간이 걸립니다. 데이터를 가져 오는 더 좋은 방법이 있습니까?
PHP에서 모든 ID를 가져온 다음 무작위로 하나의 ID를 가져 와서이 ID의 전체 집합을 찾습니다. 하지만 나는 PHP에서 많은 데이터를 가져 오는 것에 대해 걱정한다.
해당 주제에 대한 의견을 보내 주셔서 감사합니다. 단
* 수 * 수 더 좋은 방법은 한 번에 충분한 수요가있다 ... (HTTPS A [모음에서 임의의 항목을 얻을 수있는 기능 요청]이 : // JIRA를. mongodb.org/browse/SERVER-533)를 MongoDB 티켓 추적기에 추가하십시오. 기본적으로 구현되는 경우 가장 효율적인 옵션 일 것입니다. (기능을 원한다면 투표를하십시오.) –
이 질문은 스택 오버플로의 여러 형태로 여기에 있습니다. 가장 인기있는 질문은 [Random record from MongoDB] (http://stackoverflow.com/questions/2824157/random-record-from-mongodb)입니다. 좋은 반응이 있습니다. 즉, 질문에 대한 가장 좋은 생각은 하나의 임의의 문서를 가져 오는 것이 아니라 결과 집합을 무작위로 추출하는 것입니다. 이를 위해 [Mongo에서 무작위로 결과 집합 주문하기] (http://stackoverflow.com/questions/8500266/ordering-a-result-set-randomly-in-mongo)를 참조하십시오. –