다음은 코드 조각입니다. '******************************************* ***************************************************************************************** 누군가 ***************************************************************************************** 누군가 ***************************************************************************************** 누군가 ***************************************************************************************** 누군가 ***************, *************************** '**이 프로그램 이름 : "Infinite Stream"페이징 프로그램 '** 저자 : 중재자 (AASX) '** 버전 : 백만 레벨 '** '** QQ : 22222xx '** 이메일 : [email protected] '** http://www.images.org/ '******************************************* ***************************************************************************************** 누군가 ***************************************************************************************** 누군가 ***************************************************************************************** 누군가 ***************************************************************************************** 누군가 ***************, *************************** '** '** [저자의 말] '** '** 페이징 프로그램은 의심 할 여지없이 많은 네트워크 프로그램 기능 중에는 더 어려운 일입니다 '** 대부분의 사람들은 여전히 전통적인 페이징 방법 (rs.pagesize = xx)을 사용하여 이해합니다. '** 데이터베이스 작업은이 전통적인 방법이 단점이 있음을 알고 있습니다. 페이지가 처음으로 열 때 '** 모든 레코드 세트를 읽습니다. 데이터가 클 때 치명적이며 연결됩니다. '** 페이지는 매우 느리게 자원을 점유합니다. 10 만 명 이상의 데이터의 경우 '** 라이브러리이 전통적인 페이징 방법은 백만 레벨은 물론 매우 약해졌습니다 (전혀 섹스 할 수 없습니다. '** 하다). 이런 이유로, 나는이 프로그램을하도록 촉구했다. '** '** [프로그램 기능] '** '** 대규모 데이터베이스의 경우, 이상적인 운영 데이터 레코드 볼륨은 2 백만입니다. ‘** (Max Level Edition은 수많은 수량을 제한 할 것이며 데이터베이스가 아무리 큰지에 관계없이 페이지 회전 속도는 '** 변경되지 않은), 이것은 Saiyang 1G, Memory 512, Win2K Ring의 백만 레벨 버전의 페이징 프로그램입니다. '** 영역의 테스트 데이터 : '** '** SQLSERVER 2K 100,000 레코드는 페이지 당 20 개를 보여줍니다. '** 평균 페이지 회전 속도 : 45ms '** SQLSERVER 2K 1 백만 레코드 페이지 당 20 개를 표시합니다. '** 평균 페이지 회전 속도 : 350ms '** '** '** [Pagling Principle] '** '**이 프로그램은 더 이상 Rs.Pagesize 메소드를 페이지에 사용하지 않고 데이터베이스를 연결하는 커서 유형을 사용하지 않습니다. '**는 Conn, 1, X를 사용하지 않지만 Conn, 0,1은 가장 빠른 커서 유형이어야합니다. '**는 프로그램을 복잡하게 만들 것이라고 생각합니다. '** 내 프로그래밍 스타일이되어야합니다. '** "Infinite Stream"의 페이징 중심은 다음과 같습니다. 페이지 당 표시 해야하는 레코드 만 읽으십시오. '** Pagling 프로그램은 사전 읽기 모든 데이터를 읽습니다.이 프로그램은이 프로그램이 적은 리소스의 가장 큰 장점입니다. '** 합리적 속도도 크게 향상되었습니다. 특히 데이터의 양이 클 때 속도 이점이 있습니다. '** 더 분명한 (약 350ms). '** 프로그램이 실행되면 Curcorbegin 및 Curcorend가 표시하는 첫 번째 레코드 '** 레코드와 마지막 레코드의 ID 값은 다음 페이지의 마크로서 상위 XX를 사용하여 가져갑니다. '** 필요한 데이터가 표시 한 다음 ID 값을 기록합니다. '** '** [결론] '** ‘**이 프로그램 '** 다른 목적으로 변경하거나 사용하십시오. 저자의 노력을 존중하고 출처를 표시하십시오. '**이 프로그램에 오류 및 최적화와 같은 단점이있는 경우 www.csdn.net/의 웹 개발로 이동하십시오. '** ASP 칼럼은 중국의 소프트웨어 산업 개발을 위해 토론을 발행했습니다. '** '******************************************* ***************************************************************************************** 누군가 ***************************************************************************************** 누군가 ***************************************************************************************** 누군가 ***************************************************************************************** 누군가 **************, ************************** 옵션 명시 적 '응답. 플러시 희미한 구간, 종료 시간 begintime = 타이머 Dim Conn, SQLSTR, RS, DEFRECORDNUM, CURSORBEGIN, CURSOREND, CURPAGENUM, HAV, HAV defrecordnum = 20 '-------------------------------------------------- -------------------- if request ( "cursorbegin") = "그런 다음 cursorbegin = 0 else cursorbegin = request ("cursorbegin ")). IF request ( "Cursorend") = "Cursorend = 0 else cursorend = request ("Cursorend ") 요청 ( "curpagenum") <> "" ""그럼 curpagenum = clng (요청 ( "curpagenum") ifurpagenum <= 0 그런 다음 capagenum = 1입니다 또 다른 curpagenum = 1 끝 If hav = 요청 ( "hav") hav = "" "이면 hav ="next " '---------------------------------------------------------------- ----------------------------------------------------------- -------------------------------------------- '------------------- 함수 Turnpagefs (disprecordnum) 희미한 n (rs.eof) 및 n <disprecordnum n = n 1 response.write "<Ter>"& _ "<td bgcolor = 'efefef'>"& rs (0) & "</td>"& _ "<td bgcolor = 'efefef'>"& rs (1) & "</td>"& _ "<td bgcolor = 'efefef'>"& rs (2) & "</td>"& _ "<td bgcolor = 'efefef'>"& rs (3) & "</td>"& _ "<td bgcolor = 'efefef'>"& rs (4) & "</td>"& _ "<td bgcolor = 'efefef'>"& rs (5) & "</td>"& _ "</tr>" "" n = 1 인 경우 cursorbegin = rs (0) n = defrecordnum 또는 rs.eof 인 경우 cursorend = rs (0) rs.movenext 향하게 하다 엔드 기능 '---------------------------------------------------------------- ------------------------- set conn = server.createobject ( "adodb.connection") 'sqlstr = "provider = microsoft.jet.oledb.4.0; data source ="& server.mappath ( "mlodata.mdb")) sqlstr = "driver = {sql server}; server = perbiter; uid = parbiter; pwd = 123456; database = mldata" "" " conn.open sqlstr '-------- 통계 총 기록/총 페이지 ------------------------------ '-ps : 권장 카운트 (ID), ID는 자동 번호 및 인덱스입니다. 그렇지 않으면 속도가 크게 할인 될 수 있습니다. '-PS :이 통계는이 프로그램이 취소되면 속도가 약 10 배 더 빠릅니다. Dim Totalrcords, TotalPages SQLSTR = "ABC에서 Recornsum으로 Count (ID)를 선택하십시오" set rs = const.execute (sqlstr, 0,1) TotalRecords = rs ( "Recordum") TotalPages = abs (int (Totalrecords/defrecordnum*(-1))) Rs.Close RS = 아무것도 설정하지 않습니다 '-------- hav ------에 따라 해당 SQL 문자열을 선택하십시오. SELECT CASE (HAV) "뒤로"사례 Cursorend = Cursorbegin sqlstr = "선택 상단"& defalecordnum & "_ ID, 제목, Filename, K, Imgsize, Nameson _ ABC에서 id < "& cursorbegin & _ "그리고 ID는 (상단 선택”& defrecordnum_ & "Id <"& cursorbegin_. & "ID DESC의 주문) 주문별 주문" "다음"사례 sqlstr = "선택 상단"& defrecordnum_ & "id, 제목, filename, k, imgsize, abc where id>"& cursorend & _. "ID로 주문" 종료 선택 set rs = const.execute (sqlstr, 0,1) %>
|