亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2007-01-01 00:00:00安寧輝
        計(jì)算機(jī)時(shí)代 2007年3期

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

        關(guān)鍵詞:Web分頁(yè)技術(shù);ADO;Recordset;改進(jìn)

        0引言

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

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

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

        2 ADO Recordset分頁(yè)方法

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

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

        AbsolutePage:當(dāng)Recordset設(shè)置有分頁(yè)時(shí),返回當(dāng)前頁(yè)碼;

        PageCount:當(dāng)Recordset設(shè)置有分頁(yè)時(shí),返回分頁(yè)總數(shù);

        PageSize:當(dāng)Recordset設(shè)置有分頁(yè)時(shí),為每頁(yè)的記錄個(gè)數(shù);

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

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

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

        3 ADO Recordset分頁(yè)方法的弊端

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

        4 ADO Recordset分頁(yè)方法的改進(jìn)

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

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

        (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的“<”和“<=”操作,而不支持“>”和“>=”等操作。可以通過(guò)l臨時(shí)視圖將偽列轉(zhuǎn)化為可以實(shí)際比較的列進(jìn)行操作:Create V_Temp AsSelect Rownum RN,A_Table.From A_Table,然后將上面代碼中的第3行改為:rs.Source=”Select}From V_TempWhere RN<60 and RN>50\"。運(yùn)行完第8行顯示完數(shù)據(jù)再刪去臨時(shí)視圖:Drop View V_Temp。雖然改良后的方法引入了臨時(shí)視圖,增加了創(chuàng)建和刪除臨時(shí)視圖的開(kāi)銷(xiāo),但該方法卻控制了生成Recordset的數(shù)據(jù)集合的大小,在大數(shù)據(jù)量的情況下,就會(huì)顯示出明顯的效率優(yōu)勢(shì)。

        5兩種分頁(yè)方法效率的對(duì)比測(cè)試

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

        6結(jié)束語(yǔ)

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

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

        精品少妇人妻av无码专区| 一区二区三区亚洲免费| 99热在线播放精品6| 国产av自拍在线观看| 精品人妻一区二区三区久久| 久久久久无码精品国产app| 亚洲欧美日韩高清专区一区| 久久青青草视频免费观看| 最新在线观看免费的a站国产| 久久99国产精品久久99| 欧美丰满大屁股ass| 对白刺激的老熟女露脸| 免费美女黄网站久久久| 日本人妻精品有码字幕| 中文字幕一精品亚洲无线一区| 又长又大又粗又硬3p免费视频| 亚洲国产高清在线一区二区三区| 精品91精品91精品国产片| 亚洲乱熟妇一区二区三区蜜桃| 国产成人无码a在线观看不卡| 国产午夜亚洲精品午夜鲁丝片| 91精品国产综合成人| 亚洲福利第一页在线观看| 日本免费一区二区三区影院 | 午夜天堂av天堂久久久| 精品偷拍被偷拍在线观看| 国产喷水福利在线视频| 午夜人妻中文字幕福利| 精品一区二区三区蜜桃麻豆| 玩50岁四川熟女大白屁股直播| 亚洲毛片在线播放| 不打码在线观看一区二区三区视频| 亚洲国产系列一区二区| 午夜色大片在线观看| 国产成人户外露出视频在线| 国产av一区二区三区狼人香蕉| 久久aaaa片一区二区| 中国丰满熟妇xxxx性| 中文字幕在线日韩| 在线免费观看毛视频亚洲精品| 亚洲情综合五月天|