亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

數據分頁方法新思路,速度非??欤?/h1>
2019-11-18 19:30:48
字體:
來源:轉載
供稿:網友

這篇文章要達到的目的就是,實現大數據分頁瀏覽并最優化速度。

    建立一個web 應用,分頁瀏覽功能必不可少;這個問題也是長久以來最普遍的問題,目前也得到了較好的解決,其中象asp 程序的分頁算法有很多,比如使用ado 對象的PageSize 這些屬性,按記錄總數計算頁,然后跳轉記錄集再輸出;也有編寫存儲過程實現分頁數據,這些方面各有優缺點,以下本人介紹一種應用實際項目中速度非常快的分頁算法;

關鍵點:SQL (用TOP 和 自動編號 實現)
        頁面腳本 (瀏覽器回退功能)

環境:
  IIS/SQL Server/access
表結構:
create table 內容表 (
 自動編號 IDENTITY(int, 1,1) not null,
 分類編碼 <I>var</I>char(20) null,
 標題 <I>var</I>char(255) NULL,
 內容 <I>var</I>char(4000) null,
 時間 datetime null,
)

實現原理:
  這個表設定了自動編號字段,這個字段的特性就是生成不重復的整形,包括刪除了記錄后該字段仍然保持‘流水性’(注:通常在系統表建設中,這種字段的運用很少,因為編號不能自由管理,但在這里使用它,主要是想在文章中省略編號維護的代碼)。

分頁:
  那么第一步,就是查詢一個頁的數據;如果有100筆記錄,按20記錄一頁,那么通常的分頁算法就是“頁總數=總記錄 除 分頁的控制數 [有余數的話,頁總數加一]”,這樣的做法就導致必須產生所有記錄的一個大記錄集;從而,又有人提出了用存儲過程的分頁算法,前者是asp 腳本產生大記錄集,這樣速度相當慢,后者是殺雞用牛刀,雖然我經常寫存儲過程,但根據我的思路會發現寫存儲過程完全多余。
  
  在SQL 中,許多剛接觸它的朋友都知道 Top 修飾關鍵字的作用;例如:select TOP 1 * from table1 --這樣就實現從Table1表返回只有一條記錄的記錄集那么分頁優化的最終目的就是避免產生過大的記錄集,通過TOP 即可完全控制;現在查詢表應該是 select Top 20 自動編號,標題,內容,時間 from 內容表。
  
  但現在還有個問題,就是如何定位,Top 不可能自動給我們定位輸出某個頁,這就設計到了where 從句,根據一個特定條件輸出正確的內容;注意:記錄的 order by 排序是非常重要的,這個決定了這個算法的成??;
  
這里的演示是DESC 方式,倒序排列,比如網站的軟件更新,就是最近的更新放最前面,而這個就是倒序方式。

OK,下面來看看實際代碼,首先要確定是否為起始頁。


    dim strSQL,i,endID,isBeginPage
    const Cnt_PageSize = 20      '定義每頁記錄的大小
    '通過檢查瀏覽器傳遞的Page 參數的值來判斷是否為進入下一頁的操作
    isBeginPage = isEmpty(request("Page")) or request("Page")="" or request("Page")<>"next" 
    '這里是分頁的核心
    if isBeginPage then '如果是起始頁
     '查詢=列出分類編碼等于參數flbm 的記錄,按倒序排列,并只列出前 Cnt_PageSize 筆 (Cnt_PageSize是常量定義,比如20)
      strSQL = "select TOP " & Cnt_pageSize & " 自動編號,標題,內容,時間 from 內容表 where 分類編碼= '" & TRIM(SQLEncode(request("flbm"))) & "' order by 自動編號 desc"
    else '如果不是起始頁
      if request("Page")="next" then '這里這樣寫是為了加強代碼的表現,如果參數為next ,則表示取下頁內容
       '查詢=列出分類編碼等于參數flbm的記錄并且要小于自動編號endID (endID也是參數),并倒序排列,并只列出前 Cnt_PageSize 筆 (Cnt_PageSize是常量定義,比如20)
        strSQL = "select TOP " & Cnt_pageSize & " 自動編號,標題,內容,時間 from 內容表 where 分類編碼= '" & TRIM(SQLEncode(request("flbm"))) & "' and 自動編號<" & request("endID") & " order by 自動編號 desc"
      End if
    end if

    '打開數據連接執行SQL 并建立記錄集
    set rs = Cnn.Execute(strSQL)
    if not rs.Eof then '這里寫入判斷是否為Eof 可以不要,但是,在這里卻有它的特殊意義
      call TableTitle '這里是自寫的函數,用于建立表格標記
        call beginTr '這里是建立表格tr標記

        for i=0 to rs.fields.Count-1 '遍歷記錄集字段
          call AddCol(rs(i).name) '輸出字段名
        Next
        
        call endTr      

        while not rs.eof      '循環記錄集內容,并輸出
          call beginTr

          for i=0 to rs.fields.Count-1
            call AddRow(ASPEncode(rs(i).value))
          Next
          call endTr
          endID = rs("自動編號")      '這里保存每次輸出的自動編號值
          rs.MoveNext
        Wend
      call TableBottom     '到此為止,就簡單的將記錄集內容全部輸出
      '這里輸出翻頁標記,vbaIIF 是自寫函數
       原型為 <I>function</I> vbaIIF(a,b,c)
                if a then
                  vbaIIF =b
                else
                  vbaIIF =c
                end if
              end <I>function</I>
      
       上一頁的實現是通過腳本調用瀏覽器的功能 history.back(1) 實現,那么回頁時并不需要在服務器端重新生成數據,速度不用考慮了。
       在首頁的時候,上一頁的鏈接應該是無效的,通過 vbaIIF(isBeginPage,"disabled","") 實現,如果為首頁,那么在標記中加入 disabled 屬性 ,如果不是首頁,則加入history.back(1); 腳本指令,用于回退瀏覽頁。
       下一頁是傳遞Page 參數和endID參數,Page 設置為 next 表示為下一頁的動作,endID 表示當前記錄集的末尾編號,下頁將由此分頁。
       
      response.Write("〈a href=""#"" onclick=""java<I>scr    else
     '這里通過判斷記錄集是否為空來解決到末尾頁還可以繼續翻頁的問題
      if not isBeginPage then
       '判斷是否為空記錄,并且不是起始頁,那么生成回退頁面的腳本,效果就是進入該頁后將自動返回到上頁。       
        response.Write "〈<I>script</I> language=java<I>script</I>〉" & vbCrlf
        Response.Write "history.back(1);" & vbCrlf
        Response.Write "〈/<I>script</I>〉"
        Response.End
      else '如果是起始頁記錄就為空,則提示無內容
        Response.Write "〈font color=blue〉該類別下無內容〈/font〉"
      end if
    end If


總結:通過前臺腳本,SQL查詢技巧,實現高性能的分頁程序簡單快速

希望同行提出更優秀實時數據分頁算法

備注:由于論壇限制了HTML字符,所以關鍵符號采用了中文大寫。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人午夜免费视在线看片| 97精品国产97久久久久久免费| 欧美亚洲国产视频小说| 97精品在线观看| 国产精品久久久久一区二区| 韩国国内大量揄拍精品视频| 美日韩在线视频| 国产日韩欧美综合| 精品亚洲一区二区三区四区五区| www.色综合| 欧美亚洲另类激情另类| 久久999免费视频| 亚洲精品电影网在线观看| 国产一区二区三区久久精品| 91伊人影院在线播放| 91在线国产电影| 久久久精品影院| 国产婷婷97碰碰久久人人蜜臀| 欧美亚洲国产视频小说| 欧美日本亚洲视频| 久久成人这里只有精品| 懂色av中文一区二区三区天美| 国产视频一区在线| 欧美成人一区二区三区电影| 日韩免费在线播放| 欧美激情第99页| 中文在线资源观看视频网站免费不卡| 亚洲精品ady| 久久久国产精品一区| 日韩电影在线观看永久视频免费网站| 欧美激情一区二区三区久久久| 日韩精品免费综合视频在线播放| 亚洲色图13p| 欧美日韩亚洲天堂| 欧美精品在线第一页| 色综合久久天天综线观看| 亚洲女在线观看| 国产精品露脸自拍| 久久精品国产v日韩v亚洲| 日韩专区中文字幕| 亚洲欧美自拍一区| 中文字幕久热精品视频在线| 欧美性猛交xxxx乱大交| 精品视频在线观看日韩| 色综合伊人色综合网站| 久久精品免费电影| 亚洲国产精品99久久| 91高清免费视频| 欧美午夜丰满在线18影院| 日韩亚洲第一页| 中文字幕在线成人| 久久97久久97精品免视看| 乱亲女秽乱长久久久| 俺也去精品视频在线观看| 欧美性一区二区三区| 久久色精品视频| 中文字幕欧美在线| 亚洲二区中文字幕| 国产伊人精品在线| 中文字幕亚洲无线码a| 久久艹在线视频| 国产成人+综合亚洲+天堂| 91在线播放国产| 久久亚洲一区二区三区四区五区高| www.欧美免费| 秋霞av国产精品一区| 久久韩国免费视频| 亚洲天堂男人的天堂| 岛国av一区二区在线在线观看| 91久久夜色精品国产网站| 国产精品2018| 久久久999精品免费| 国产一区二中文字幕在线看| 国产精品嫩草影院久久久| 91精品综合久久久久久五月天| 久久精品2019中文字幕| 欧美刺激性大交免费视频| 亚洲国产精品人久久电影| 亚洲视频欧洲视频| 亚洲国产高清自拍| 国产伦精品一区二区三区精品视频| 美女999久久久精品视频| 久久好看免费视频| 亚洲xxx视频| 中国china体内裑精亚洲片| 久久免费视频观看| 亚洲偷熟乱区亚洲香蕉av| 精品国产美女在线| 亚洲男人的天堂网站| 91老司机精品视频| 欧美超级乱淫片喷水| 亚洲成人网久久久| 国产精品美女久久久久久免费| 久久成人一区二区| 26uuu另类亚洲欧美日本老年| 成人午夜在线观看| 8050国产精品久久久久久| 久久久久国产精品免费| 国产精品久久久久国产a级| 亚洲色图欧美制服丝袜另类第一页| 欧美美最猛性xxxxxx| 亚洲最大的成人网| 亚洲在线视频观看| 69视频在线播放| 精品中文字幕在线2019| 国产精品久久久久久久久免费| 亚洲三级 欧美三级| 亚洲欧美日韩成人| 在线看福利67194| 中文字幕久久久| 精品亚洲永久免费精品| 性欧美亚洲xxxx乳在线观看| 色妞欧美日韩在线| 久久久噜噜噜久噜久久| 黑人巨大精品欧美一区免费视频| 亚洲精品免费在线视频| 久久中文字幕一区| 国产日韩在线免费| 福利一区福利二区微拍刺激| 日韩精品免费在线| 亚洲精品国产综合区久久久久久久| 成人激情黄色网| 日韩美女在线看| 日本精品一区二区三区在线| 日韩精品免费电影| 狠狠做深爱婷婷久久综合一区| 国产91久久婷婷一区二区| 国产亚洲一区二区在线| 国内精品伊人久久| 国语自产精品视频在线看抢先版图片| 91色精品视频在线| 日韩美女主播视频| 青青草一区二区| 欧美性生交xxxxxdddd| 精品久久久999| 欧美成人免费一级人片100| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品成人一区| 九九热在线精品视频| 国产精品久久久久久中文字| 91麻豆国产精品| 国产精品狼人色视频一区| 国产精品日韩欧美综合| 97视频免费在线观看| 久久久在线免费观看| 亚洲国产精久久久久久| 欧美激情在线视频二区| 久久99热精品| 日韩美女在线看| 国产精品电影观看| 国产成人高清激情视频在线观看| 亚洲aⅴ男人的天堂在线观看| 一区二区三欧美| 国产精品一区专区欧美日韩| 国内精品一区二区三区四区| 欧美黑人巨大xxx极品| 日本免费一区二区三区视频观看| 亚洲影院色在线观看免费| 亚洲一区中文字幕在线观看| 亚洲成人黄色网址| 亚洲一区二区少妇| 中文字幕av一区中文字幕天堂| 国内精品免费午夜毛片| 国产第一区电影|