日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

使用分頁(yè)查詢來(lái)適應(yīng)挖掘海量數(shù)據(jù)的需求-數(shù)據(jù)庫(kù)專家|QQread.com

 ShangShujie 2007-04-13

使用分頁(yè)查詢來(lái)適應(yīng)挖掘海量數(shù)據(jù)的需求

廣告 插畫(huà) 創(chuàng)意 動(dòng)漫 Logo 包裝 繪畫(huà) 鼠繪 3D 時(shí)尚 卡通 網(wǎng)站 CG 藝術(shù) 攝影


來(lái)源: 作者:tangl_99 2006-05-16 出處:巧巧讀書(shū) 
 oracle  mysql  

   數(shù)據(jù)挖掘各類算法中,常常需要遍歷整個(gè)數(shù)據(jù)庫(kù)(表)。現(xiàn)實(shí)中的數(shù)據(jù)庫(kù)可能十分大,往往不可能通過(guò)一個(gè)簡(jiǎn)單的Select *的方式遍歷提取數(shù)據(jù)表內(nèi)的所有元組。 直接用Select * 的方式存在兩大問(wèn)題,一是Select *過(guò)后,可能要等很久數(shù)據(jù)庫(kù)才能將所有信息提交完畢,第二是得到的結(jié)果可能是很大,遠(yuǎn)遠(yuǎn)超過(guò)內(nèi)存的限制。

   現(xiàn)在各種主流的數(shù)據(jù)庫(kù)都支持了分頁(yè)查詢的方式。

  Oracle為例,通過(guò)rownum關(guān)鍵字可以獲取指定的行區(qū)間。
 
比如:  Select * from XX.TABLE1 where rownum <= 100。不過(guò)Oracle的rownum有點(diǎn)特別的就是,rownum必須從1開(kāi)始,如果直接這樣寫(xiě)就不行了: Select * from XX.TABLE1 where rownum between 50 and 100。
  而實(shí)際上,我們可以這樣來(lái)寫(xiě):SELECT * from (select n.*,rownum num from XX.TABLE1 n WHERE rownum <=100) where num >= 50;

  MySQL為例,提供了limit關(guān)鍵字,更加方便獲取中間某區(qū)間的行數(shù)據(jù)。
 
比如: Select * from TABLE1 limit 50,100。 MySQL的limit關(guān)鍵字用起來(lái)比Oracle要方便一些。不過(guò)各個(gè)數(shù)據(jù)庫(kù)的分頁(yè)查詢的速度我倒沒(méi)有研究過(guò),網(wǎng)上聽(tīng)一些高手們說(shuō),Oracle提供的分頁(yè)查詢效率要高一些。

  Hibernate這樣的數(shù)據(jù)持久層提供的分頁(yè)查詢,可以屏蔽掉各個(gè)不同的數(shù)據(jù)庫(kù)之間具體SQL實(shí)現(xiàn)差異。
 
Hiberante這樣的數(shù)據(jù)持久層工具一大好處就是可以屏蔽掉不同數(shù)據(jù)庫(kù)的之間的某些細(xì)節(jié)差異。分頁(yè)查詢?cè)诓煌臄?shù)據(jù)庫(kù)上實(shí)現(xiàn)的SQL不一樣,所以要統(tǒng)一,最好使用Hibernate這樣的工具。
  Query q = session.createQuery("from Cat as c");
  q.setFirstResult(50);
  q.setMaxResults(100);
  List l = q.list();

   網(wǎng)上到處都可以搜尋到關(guān)于Hibernate內(nèi)部實(shí)現(xiàn)分頁(yè)查詢的解讀的文章??梢钥吹?,Hibernate內(nèi)部也是通過(guò)rownum,limit這些關(guān)鍵字來(lái)實(shí)現(xiàn)分頁(yè)的。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多