2014-04-07 3 views
0

내 webapp (PHP)에서 단일 데이터베이스 레코드의 내용을 보여주는 스크립트가 있습니다 : view.php?id=n, n은 레코드의 ID입니다.추가 검색을 위해 검색 결과의 쿼리 ID를 저장 하시겠습니까?

는 또한 다음 및 페이지 이전 링크 증가를 사용하여 (레코드 목록에 돌아 가지 않고 레코드를 검색하는)이 있습니다/현재 ID의 감소는 view.php 호출 :

?id=$current_id-1 (Prev) 
?id=$current_id+1 (Next) 

이제 검색 기능을 구현할 것입니다. 다음이전 링크를 통해 최근 검색 결과를 통해 사용자를 안내하여 위의 메커니즘을 쓸모 없게 만들 수 있습니다.

현재 검색 결과의 ID 목록을 현재 세션에 저장해야합니다. 5000 레코드가 있다는 것은 서버가 필터를 사용하지 않는 검색 쿼리를 수행하는 각 사용자에 대해 (마지막으로 변경된 시간까지 모든 레코드를 정렬하는 것과 같이) 약 20KB의 데이터 (32 비트 정수라고 가정)를 보유해야한다는 것을 의미합니다.

이것은 적절한 방법이며 성능 및 메모리 사용면에서 허용 가능합니까 아니면 다른 방법이 있습니까?

+0

다음 및 이전 버튼으로 검색 매개 변수를 전달하십시오. 내가 너를 여기에 보내길 바래. –

답변

0

prevnext의 ID 만 저장하는 경우 ID로 레코드를 가져오고 id가 기본 키이며 인덱싱 된 것이므로 의미가 없습니다. 그러나 과 같이 key => value 쌍을 저장하려면 세션에 저장하지 않고 캐시 할 수 있습니다. 따라서 사용자가 prev 또는 next을 클릭하면 db를 쿼리하지 않고 ID을 사용하여 캐시에서 결과를 가져올 수 있습니다. 이 경우 각 데이터베이스 업데이트시 캐시를 새로 고쳐야합니다.

0

이러한 경우에 매우 편리한 데이터 구조가 있습니다 (SplDoublyLinkedList). 연결된 목록을 찾지 못했다면 여기에 좋은 그림이있는 입니다.

메모리 용량이 얼마나 클지는 확실하지 않으므로 먼저 마일리지를 테스트하고 싶습니다. 그러나 여전히, 그들은 수작업보다 더 빠를 가능성이 높습니다.

건배.

관련 문제