999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于ADO Recordset技術的Web數(shù)據(jù)分頁方法的改進

2007-01-01 00:00:00安寧輝
計算機時代 2007年3期

摘要:數(shù)據(jù)分頁是基于數(shù)據(jù)庫的動態(tài)Web系統(tǒng)所必需的技術。Microsoft公司的ADO(Active Data objecc)數(shù)據(jù)存取技術提供了一種基于Recordset的數(shù)據(jù)分頁方法,該方法簡單易用,卻由于效率原因,不適用大數(shù)據(jù)量的快速定位分頁。文章對該方法從根本上進行了改進,獲得了非常明顯的效果,完全適用于企業(yè)級應用的海量數(shù)據(jù)分頁定位。

關鍵詞:Web分頁技術;ADO;Recordset;改進

0引言

隨著信息技術的發(fā)展,人們越來越多地借助于計算機和網(wǎng)絡獲取信息,但是面對浩如煙海的信息資源,查詢結(jié)果往往會有成千上萬條數(shù)據(jù)。數(shù)據(jù)分頁技術提供了一種有效的途徑,使我們可以像看書一樣,一頁一頁地瀏覽查詢結(jié)果。本文對廣泛應用在動態(tài)Web系統(tǒng)中的ADO Recordset數(shù)據(jù)分頁技術,進行了必要的改進。

1數(shù)據(jù)分頁方法

所謂數(shù)據(jù)分頁方法,是將查詢結(jié)果分頁顯示的方法,是基于數(shù)據(jù)庫的動態(tài)Web系統(tǒng)所必需的技術。因為數(shù)據(jù)庫中需要顯示的數(shù)據(jù)可能有成千上萬條,大量的數(shù)據(jù)從數(shù)據(jù)庫服務器經(jīng)過網(wǎng)絡傳輸?shù)娇蛻舳藶g覽器,必須組織成便于瀏覽的方式顯示給用戶。如圖l所示Google搜索系統(tǒng)就應用了數(shù)據(jù)分頁技術。

2 ADO Recordset分頁方法

ADO(Active Data Object)技術是Microsoft公司支持的一種主要的數(shù)據(jù)存取技術,是Microsoft提出的各種數(shù)據(jù)存取技術的演化結(jié)果,目前是Windows平臺存取數(shù)據(jù)的標準。

ADO使用了集合對象的概念,其中Recordset對象是ADO的靈魂對象,它封裝了完善的數(shù)據(jù)處理功能。ADO提供了一種數(shù)據(jù)分頁技術,是通過Recordset對象來實現(xiàn)的。Recordset對象有很多屬性和方法,其中與分頁有關的有以下屬性:

AbsolutePage:當Recordset設置有分頁時,返回當前頁碼;

PageCount:當Recordset設置有分頁時,返回分頁總數(shù);

PageSize:當Recordset設置有分頁時,為每頁的記錄個數(shù);

RecordCount:返回當前Recordset對象內(nèi)的記錄數(shù)。

使用Recordset對象來實現(xiàn)分頁顯示十分簡單:先建立一個Recordset對象,將查詢到的記錄封裝進Recordset對象之中;然后引用RecordCount屬性值可以獲得記錄總數(shù),根據(jù)需要設置PageSize屬性,則可以得到分頁總數(shù)PageCount,其中PageCount取大于或者等于rRecordCount/PageSize]的最小整數(shù)。然后設置AbsolutePage屬性后,就可以返回某一分頁的記錄內(nèi)容。以下代碼實現(xiàn)了A_Table表中的第6頁(第5l一60條目錄)的數(shù)據(jù)顯示。

(1)Set rs=Server.CreateObiectCADODB.Recordset\")

(2)rs.ActiveConnection=Connection_String

(3)rs.Source=\"Select*From A_Table\"

(4)rs.CursorType=0

(5)rs.CursorLocation=2

(6)rs.LockType=l

(7)rs.Open()

(8)Recordset.PageSize=10

(9)Recordset.AbsolutePage=6

(10)ShowData

這種技術被廣泛應用在基于Windows平臺的動態(tài)Web數(shù)據(jù)庫系統(tǒng)中,尤其是基于ASP(Active Server Pages)的中小型Web系統(tǒng)中。

3 ADO Recordset分頁方法的弊端

利用ADO的Recordset對象可以簡單方便地實現(xiàn)數(shù)據(jù)分頁,可是必須將所有數(shù)據(jù)全部封裝進Recordset對象后才能進行分頁,如果數(shù)據(jù)量很大,比如超過上萬條,那么封裝數(shù)據(jù)就是一個相當耗時、耗資源的過程,因此該技術只能適合小數(shù)據(jù)量的分頁顯示,對于設計企業(yè)級應用系統(tǒng)沒有多大實用價值。

4 ADO Recordset分頁方法的改進

為了提高ADO Recordset分頁方法的效率,就必須從減小Recordset封裝的記錄個數(shù)著手。分析上述代碼中第3行的SQL查詢語句Select*From A_Table可知,如果直接在SQL語句中限制返回的記錄數(shù),則可以限制Recordset的大小。最理想的情況是只返回所需要的記錄數(shù),做到精確存取,從根本上改變了Recordset分頁封裝所有記錄的“粗放式”存取。

以下是改良后的代碼,仍然生成Recordset,但是摒棄了Recordset的AbsolutePage等相關分頁屬性,Recordset封裝記錄時限制記錄個數(shù),直接取第51-60條記錄作為Recordset的數(shù)據(jù)集合。其中Rownum代表記錄在表中存儲所在行的序號,是數(shù)據(jù)庫中的關鍵字,是被Oracle等數(shù)據(jù)庫支持的偽列。

(1)Set rs=Server.CreateObjectCADODB.Recordset\")

(2)rs.ActiveConnection=Connection_String

(3)rs.Souree=\"Select。From A_Table where Rownum<60and Rownum>50\"’

(4)rs.CursorType=0

(5)rs.CursorLocation=2

(6)rs.LockType=l

(7)rs.Open0

(8)ShowData

某些早期Oracle版本(如Oracle5)僅支持Rownum的“<”和“<=”操作,而不支持“>”和“>=”等操作??梢酝ㄟ^l臨時視圖將偽列轉(zhuǎn)化為可以實際比較的列進行操作:Create V_Temp AsSelect Rownum RN,A_Table.From A_Table,然后將上面代碼中的第3行改為:rs.Source=”Select}From V_TempWhere RN<60 and RN>50\"。運行完第8行顯示完數(shù)據(jù)再刪去臨時視圖:Drop View V_Temp。雖然改良后的方法引入了臨時視圖,增加了創(chuàng)建和刪除臨時視圖的開銷,但該方法卻控制了生成Recordset的數(shù)據(jù)集合的大小,在大數(shù)據(jù)量的情況下,就會顯示出明顯的效率優(yōu)勢。

5兩種分頁方法效率的對比測試

表1是A_Table中的記錄個數(shù)分別為100、200、1000、2000、10000、20000、100000和200000的情況下,瀏覽第51-60條記錄時,采用兩種分頁方法完成分頁的時間T、運行所耗資源(包括CPU時間u和內(nèi)存使用M)的對比情況。測試平臺是PIIl500,256M RAM,Windows 2000 Professional,某型Oracle數(shù)據(jù)庫,測試用表每記錄有33個字段,約500字節(jié)。其中第二種方法的實現(xiàn)引入了臨時視圖,效果數(shù)據(jù)中包括建立和刪除臨時視圖的開銷。圖2是兩種分頁方法執(zhí)行時間對比,圖3是兩種分頁方法運行所需CPU時間對比,圖4是兩種分頁方法運行所需內(nèi)存對比。

6結(jié)束語

從表l和圖2、3、4可以看出,直接使用Microsoft的ADORecordset分頁定位技術,其所需的時間,所花的CPU時間和內(nèi)存空間的開銷,是隨著表的規(guī)模成線性增長的,當表中記錄達到10000規(guī)模以后,定位到某頁就需要數(shù)分鐘時間,基本上已經(jīng)失去了在Web上的使用價值。而改良后的定位分頁方法,由于從根本上減少了大量封裝記錄的過程,因而其開銷非常小,其CPU時間和內(nèi)存不隨表的規(guī)模而變化,訪問時間也很快。在20萬條記錄的表中,改良后的方法即使包含了創(chuàng)建和刪除臨時視圖的開銷,其定位1頁的時間也僅為6秒,是改良前方法的0.16%,所耗CPU時間是改良前的0.12%,所耗內(nèi)存是改良前的11.3%,效率分別是改良前的625倍、830倍和8.84倍。

(注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。)

主站蜘蛛池模板: 国产综合网站| 狠狠ⅴ日韩v欧美v天堂| AⅤ色综合久久天堂AV色综合| 97人人做人人爽香蕉精品| 伊人久久大香线蕉影院| 91麻豆久久久| 九九九久久国产精品| 国产91导航| 91精品aⅴ无码中文字字幕蜜桃| 国产精品毛片一区| 国产三级国产精品国产普男人 | av在线手机播放| a级免费视频| 欧美国产日韩一区二区三区精品影视| 成人欧美在线观看| 呦视频在线一区二区三区| 国产精品无码制服丝袜| 2020最新国产精品视频| 蜜芽国产尤物av尤物在线看| 啦啦啦网站在线观看a毛片| 成人小视频在线观看免费| 亚洲人成网站观看在线观看| 成人福利视频网| 1769国产精品免费视频| 国产亚洲视频免费播放| 国产在线观看一区精品| 天堂在线www网亚洲| 青草视频免费在线观看| 在线观看网站国产| 精品一区二区三区无码视频无码| 久久综合亚洲色一区二区三区| 日韩福利在线观看| 乱系列中文字幕在线视频| 青青热久免费精品视频6| 欧美日韩亚洲综合在线观看 | 无码网站免费观看| 国产手机在线观看| 亚洲欧美不卡| 全部免费特黄特色大片视频| 色哟哟精品无码网站在线播放视频| 国产区91| 99久久精品国产综合婷婷| 亚洲欧美不卡中文字幕| 91无码视频在线观看| 99爱视频精品免视看| 无码高潮喷水专区久久| 国产一级在线播放| 天天躁夜夜躁狠狠躁图片| 日本黄色不卡视频| 久久网欧美| 日韩小视频网站hq| 中文无码伦av中文字幕| 精品视频在线一区| 中国一级特黄视频| 谁有在线观看日韩亚洲最新视频| 国产大片黄在线观看| 亚洲va欧美va国产综合下载| 四虎成人免费毛片| 在线观看国产精品一区| 国产午夜福利在线小视频| 91麻豆国产视频| 夜夜操天天摸| 亚洲天堂视频网站| 日韩美女福利视频| 美女被操91视频| 国产精品七七在线播放| 嫩草国产在线| 五月激情婷婷综合| 色呦呦手机在线精品| 色综合中文| 国产欧美亚洲精品第3页在线| 激情六月丁香婷婷四房播| 老司机午夜精品网站在线观看| 亚洲国产av无码综合原创国产| 伊人天堂网| 97国产精品视频自在拍| 香蕉eeww99国产精选播放| 丁香婷婷激情网| 丝袜美女被出水视频一区| 国产免费网址| 国产毛片高清一级国语| 在线看片中文字幕|