안녕하세요.
현제 되어있는 로직은 ....
일단 Select 문으로 Count를 사용해서 전체 갯수를 가져온 다음에
그 전체 갯수 중에서 페이징 하고자 하는 위치의 데이터를 RowNum를 사용해서 가져오고 있습니다.
그런데 매번 페이징을 할 때마다 전체 갯수를 가져오기 위해서 한번 더 Select를 사용한다는 게 마음에 걸립니다.
그래서 자료를 찾아 보았더니 Count(*) over() 를 사용하면 동시에 전체 갯수를 가져올 수가 있었습니다.
이 두가지 에서 선택을 해야 하는데요. 조언이 필요합니다.
예를 들어서 첫번째 경우, 매번 Select문을 한번더 돌려야 하는 부담이 있고요.
두번째의 경우는 매 레코드마다 전체갯수를 동일하게 받기 때문에 클라이언트로 전송하는 속도 무게의 부담이 있습니다.
물론 첫번째의 경우 전체 검색 갯수를 알기 위해서 매번 Select문을 한번 더 돌리기보다 가장 처음에 한번만 돌리고 그 다음부터는
첫번째 돌렸을 때에 얻은 전체 갯수를 사용해서 페이징으로 자료를 계속해서 가져올 수가 있을 것 같습니다. 하지만 이럴 경우...
자료가 수백명에 의해 동시에 수정, 삭제, 업데이트가 되기 때문에 동일한 검색 조건에서의 전체 갯수가 일정하지 않는다는 부담이 있습니다.
아무튼 이런 경우에 다른 분들은 어떻게 처리하고 있는지 궁금합니다.
조언을 부탁드립니다.
Comment 1
-
항해자™
2015.12.19 03:13
1page 일 때만 전체 count를 주는 것도 방법입니다.
혹은 전체 게시물 수를 몰라도 된다면 다음 블럭에 게시물이 있는지 정도만 알려준다면 성능에서 이득을 볼수 있겠네요,,,