사람들이 테이블의 행을 볼 수있는 웹 사이트가 있습니다 (각 행은 그림 임). 100,000 개가 넘는 행이 있습니다. 행의 여러 하위 집합을 볼 수 있으며 다른 정렬 순서로 볼 수 있습니다. 행 중 하나를보고있는 동안 "다음"또는 "이전"단추를 클릭하여 목록의 다음/이전 행으로 이동할 수 있습니다.MySQL 결과 세트의 다음 버튼에 대한 효율적인 알고리즘
웹 사이트의 "다음"및 "이전"기능을 어떻게 구현합니까?
특히, 100,000 개가 넘는 행의 목록을 반환하는 임의의 쿼리가 있고 누군가 현재보고있는 행에 대한 정보를 알고있는 경우 어떻게 NEXT 행을 효율적으로 결정합니까?
여기 웹 사이트가 젊었을 때 생각해 낸 해결책의 의사 코드가 있습니다. 단지 1000 개의 행이 있었지만 잘 작동했지만 지금은 너무 많은 메모리를 먹어 가고 있다고 생각합니다. . 이 문제에 대해 생각하는 동안
int nextRowId(string query, int currentRowId)
{
array allRowIds = mysql_query(query); // Takes up a lot of memory!
int currentIndex = (index of currentRowId in allRowIds); // Takes time!
return allRowIds[currentIndex+1];
}
, 웹 사이트 (예를 들어, 결과 집합의 현재 행의 위치를) 단지의 ID보다 현재 행에 대한 자세한 정보를 저장할 수 있다는 것을 기억하고이 정보를 다음 행 ID 식별에 도움이되는 힌트로 사용할 수 있습니다.
편집 : 이전에는 언급하지 않아서 불편을 끼쳐 드려 죄송합니다. 그러나 정적 웹 사이트가 아닙니다. 행을 목록에 자주 추가 할 수 있으며 행을 목록에서 다시 정렬 할 수 있습니다. (매우 희소하게, 행은 목록에서 제거 될 수 있습니다.) 나는 그런 종류의 것에 대해 걱정해야한다고 생각하지만 어쩌면 당신은 나를 그렇지 않으면 설득 할 수 있습니다.
답변 해 주셔서 감사합니다!기계의 대답에 대한 내 의견을 참조하십시오. 왜냐하면 두 가지 모두 귀하의 답변에도 적용되기 때문입니다. –