2012-07-16 3 views
2

을 가져올 때 매우 느립니다, 내가 먼저 수를 사용하여 그것을 얻으려고 임의의 페이지 번호 n0total/records per page 사이입니다. 이 예에서는 2.000.000 개 (40.000 페이지, 50 개 레코드/페이지)의 레코드가 있습니다. 그때 나는 "페이지"속성 봉투를 보내고있다, 그리고 나는 또한 n 번째 페이지 (50 개) 기록을 얻을 수있는 쿼리를 제한하고 있습니다 : 봉투에하는 Freebase MQL 쿼리 MQL를 사용하여 임의의 기록을 얻을 수있는 방법이 없기 때문에 임의 기록

[{ "limit": 50, "id": null, "name": null, "type": "/people/person"}]​ 

:

{"page": n} 

을 그러나 n > 50 일 때이 쿼리는 매우 느립니다. n > 100과 (예를 들어) n > 2000으로 반환해도 끔찍하게 느립니다.

임의의 기록을 얻기 위해 할 수있는 것이 있습니까? 내가 놓친 게 있니?

답변

4

이렇게하면 데이터베이스는 원하는 모든 레코드를 포함하도록 모든 이전 레코드를 가져와야합니다. 그래서 너무 느립니다.

  1. 그렇지합니다 (하는 Freebase 데이터 덤프를 사용하거나 당신이 다음 MQL를 통해 또는 전체 작업에 대한 쿼리 무작위로 사람들을 위해하는 Freebase의 MID의 목록을 생성 : 당신이 할 수있는 다른 몇 가지가 있습니다 어떤 정보를 가져 오는지 말하십시오.)
  2. 계산하기 쉬운 다른 형식으로 임의 화 문제를 전송하십시오. 예를 들어, 먼저 주제 (1997 년 - 현재)의 무작위 생성 시간 범위를 선택한 다음 해당 기간 동안 생성 된 임의의 사람 주제를 선택할 수 있습니다.