"다음 페이지" 또는 "이전 페이지"를 가져오려면 특정 _id보다 큰 sort+limit를 쿼리하면 됩니다.
"페이지 xxx"를 얻으려면 완전히 정확하고 싶다면 실제로는 좋은 방법이 없습니다. 페이징 자체는 "하나씩 계산" 논리이므로 시간이 많이 걸리는 프로세스는 여부에 관계없이 피할 수 없습니다. 인덱스가 있습니다.
페이지 수가 매우 많으면 수천만 이후의 숫자에 관심을 두는 사람은 많지 않습니다. redis를 사용하여 페이지 번호별로 _id 목록을 캐시하고 가끔씩 업데이트할 수 있습니다.
이 문제의 근본적인 요점은 "지수가 의존하는 b+ 구조는 순위 계산에 사용할 수 없습니다."입니다.
"다음 페이지" 또는 "이전 페이지"를 가져오려면 특정 _id보다 큰 sort+limit를 쿼리하면 됩니다.
"페이지 xxx"를 얻으려면 완전히 정확하고 싶다면 실제로는 좋은 방법이 없습니다. 페이징 자체는 "하나씩 계산" 논리이므로 시간이 많이 걸리는 프로세스는 여부에 관계없이 피할 수 없습니다. 인덱스가 있습니다.
페이지 수가 매우 많으면 수천만 이후의 숫자에 관심을 두는 사람은 많지 않습니다. redis를 사용하여 페이지 번호별로 _id 목록을 캐시하고 가끔씩 업데이트할 수 있습니다.
이 문제의 근본적인 요점은 "지수가 의존하는 b+ 구조는 순위 계산에 사용할 수 없습니다."입니다.
마지막 쿼리의 마지막 _id를 기록하면 다음 쿼리는 {_id: {$gt: last_id}}가 됩니다.