제가 어느 페이징이 제일 빠를까.. 고민 하다가.. 테스트로 만들어 보았습니다. 총.. 6가지..입니다..
간단하게 쿼리를 설명해드리겠습니다.1. SELECT TOP [불러올 총 게시물수] [출력 필드명] FROM [테이블 명]
1번 리스트는 이 쿼리 구문을 써서 했고요. 현제 개시물까지 이동을 Rs.Move(이동할수) 로 처리 했습니다. 2. SELECT TOP [불러올 총 게시물수] [출력 필드명] FROM [테이블 명] - 1번과 동일
1번과 쿼리구문은 동이하고요. 레코드셋의 AbsolutePage를 이용해서 페이징을 했습니다. 3. SELECT TOP [불러올 총 게시물수] [출력 필드명] FROM [테이블 명]
WHERE [글번호필드] NOT IN (SELECT TOP [제거할 게시물수] [글번호필드] FROM [테이블명]) 예전에 태요 사이트에서 보았던 쿼리 구문입니다.. NOT IN 때문에.. 문제시 되었던 쿼리구문이죠. 4. SELECT TOP [불러올 총 게시물수] [출력 필드명] FROM [테이블 명] WHERE [글번호] IN (SELECT TOP [페이지출력 갯수] [글번호] FROM (SELECT TOP [불러올 총 게시물수] [글번호] FROM [테이블 명]) AS A ORDER BY [글번호]) ORDER BY [글번호] DESC
이 쿼리 구문은 3번의 쿼리 구문의 문제점을 보완한 구문입니다. NOT IN 대신에 IN을 사용 했습니다. 5. SELECT TOP [페이지 출력갯수] [출력 필드명] FROM [테이블 명] WHERE [글번호] <= (SELECT MIN([글번호]) FROM (SELECT TOP [제거할 게시물수] + 1 [글번호] FROM [테이블명]) AS A)
5번째 쿼리 구문은 IN, NOT IN이 아닌 출력할 마지막 글번호 바로 앞이 글번호를 찾아서 처리를 해주는 쿼리 구문입니다. 6. SELECT TOP [페이지 출력갯수] [출력 필드명] FROM [테이블명] WHERE [글번호] <= (SELECT MIN([글번호]) FROM (SELECT TOP [제거할 게시물수] + 1 [글번호] FROM [테이블명] WHERE [인덱스] = [시작인덱스번호] AND [인덱스] = [끝인덱스번호]) AS A WHERE [인덱스] = [시작인덱스번호] AND [인덱스] = [끝인덱스번호]) AND [인덱스] = [시작인덱스번호] AND [인덱스] = [끝인덱스번호]
6번재 쿼리는.. 글에 인덱스(가칭)라는 필드를 하나 더 추가 해서.. 글 기본 2000개마다 (가변적입니다) 인덱스를 증가 시켰습니다. 즉 2000개를 하나의 묶음으로 만든것입니다. 그 인덱스를 기준으로 처리를 해주었습니다.(기본 개념은 영어 사전 입니다 ㅡㅡ;) |
소스 좀 보구 싶어요^^
ddakker@hanmail.net