成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle數(shù)據(jù)庫查詢高效分頁

數(shù)據(jù)庫 Oracle 數(shù)據(jù)庫運維
今天我們將談到Oracle數(shù)據(jù)庫查詢高效分頁,分頁的控件實在很方便,以前的處理方式就是數(shù)據(jù)都拿出來,然后由控件進行處理,一般數(shù)據(jù)量不大的時候應(yīng)該說感覺不出來優(yōu)劣,但由于每次從數(shù)據(jù)庫取的時候都是取所有的數(shù)據(jù),肯定會增加數(shù)據(jù)庫的壓力,傳輸?shù)臄?shù)據(jù)庫多了對網(wǎng)絡(luò)帶寬也會產(chǎn)生壓力的。

由于網(wǎng)頁渲染速度的影響,在C/S程序中那種一個Grid包含幾千、上萬行的數(shù)據(jù)基本上在網(wǎng)頁是無法展現(xiàn)的,因此一般采用分頁的形式顯示(也可能采用Visual Srolling方式加載的,企業(yè)應(yīng)用系統(tǒng)的不是很常見),ASP.NET 的數(shù)據(jù)控件一般帶有分頁功能,3.5以后還提供了單獨的分頁控件,也有用過AspNetPager這個第三方的組件。

分頁的控件實在很方便,以前的處理方式就是數(shù)據(jù)都拿出來,然后由控件進行處理,一般數(shù)據(jù)量不大的時候應(yīng)該說感覺不出來優(yōu)劣,但由于每次從數(shù)據(jù)庫取的時候都是取所有的數(shù)據(jù),肯定會增加數(shù)據(jù)庫的壓力,傳輸?shù)臄?shù)據(jù)庫多了對網(wǎng)絡(luò)帶寬也會產(chǎn)生壓力的。很有可能查出來1萬條數(shù)據(jù),***顯示只用到啟用50條,翻頁的時候又重新去查1萬條數(shù)據(jù),顯示之后的的又50條。

以下的分頁SQL比較常見的,在SQL Server也有對應(yīng)的使用TOP關(guān)鍵字的版本,記得剛學(xué)Oralce的時候就想著怎么不能rownum between minValue and maxValue的用法。與最初的疑惑的原理一樣,rownum是在查詢過程中生成的,因此以下的SQL其實是查出來5300行,然后扔掉了前面5000行,返回后面的300行。當然這種已經(jīng)進了一大步的,由數(shù)據(jù)庫返回的數(shù)據(jù)變少的,只是當查詢的頁數(shù)比較大的時候,查詢還是存在一定的浪費。

  1. select * 
  2.   from (select a.*, rownum as rnum 
  3.           from (select * from yz_bingrenyz) a 
  4.          where rownum <=5300) 
  5.  where rnum >= 5000 

       Linq提供了Skip和Take的API可以用于分頁,由于使用的是Entity Framework,在好奇的驅(qū)使下用EFProfiler查看生成的SQL,才知道這樣以下分頁更好。 主要就是使用了row_numer()over()這樣的分析函數(shù),可以直接找到那第5000行開始的地方,然后在取出30行就行了。

  1. select * 
  2.   from (select * 
  3.           from (select t.*, 
  4.                        row_number() OVER(ORDER BY nullAS "row_number" 
  5.                   from yz_bingrenyz t) p 
  6.          where p."row_number" > 5000 
  7.         ) q 
  8.  where rownum <= 30 

比較分析:

本機測試前者耗時1.3s,后者僅0.25s,從以下的執(zhí)行計劃也能看出差異來。

 

L42E79ANC}UAF1O9XP%0MG8

image

實際應(yīng)用

       如果每次查詢都要寫這種SQL那肯定比較麻煩,可以采用存儲過程進行封裝,但由于要動態(tài)執(zhí)行SQL,效率肯定又要打折扣,所以在ASP.NET中用C#封裝函數(shù)比較好,對于沒有使用實體框架的而用ADO.NET的,傳入表名 、主鍵名、頁數(shù)、要取的行數(shù)作為參數(shù),用DBCommand進行執(zhí)行返回結(jié)果即可。

原文鏈接:http://www.cnblogs.com/xiaopang2010/archive/2012/07/23/2604880.html

【編輯推薦】

  1. 如何在Oracle中使用Java存儲過程(詳解)
  2. 任重道遠遷移路之DB2到Oracle
  3. 11個重要的數(shù)據(jù)庫設(shè)計規(guī)則
  4. 讓數(shù)據(jù)庫變快的10個建議
  5. 20個數(shù)據(jù)庫設(shè)計***實踐

【責(zé)任編輯:彭凡 TEL:(010)68476606】
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2011-08-19 09:30:42

分頁查詢SQL ServerMySQL

2009-05-15 10:11:55

數(shù)據(jù)庫查詢查詢性能分頁瀏覽

2010-10-26 15:21:11

連接Oracle數(shù)據(jù)庫

2011-08-15 10:22:19

分頁查詢數(shù)據(jù)庫

2009-01-11 17:32:03

Oracle數(shù)據(jù)庫重復(fù)數(shù)據(jù)

2011-03-14 15:47:33

Oracle數(shù)據(jù)庫

2009-11-18 16:16:51

Oracle數(shù)據(jù)庫

2010-10-27 17:11:35

oracle查詢

2010-10-27 10:11:07

Oracle分頁查詢

2009-07-01 10:01:33

JSP分頁查詢MySQL數(shù)據(jù)庫

2010-10-28 16:46:23

查詢Oracle數(shù)據(jù)庫

2019-07-03 09:35:20

Oracle數(shù)據(jù)庫監(jiān)聽

2023-10-09 18:13:14

MySQL數(shù)據(jù)庫查詢

2010-03-30 18:48:24

Oracle 學(xué)習(xí)

2010-04-07 17:45:22

Oracle位圖索引

2011-08-16 16:37:40

Oracle數(shù)據(jù)庫樹形查詢根節(jié)點

2011-03-01 16:30:55

Oracle

2011-03-11 16:25:53

Oracle數(shù)據(jù)庫

2010-04-23 09:23:44

Oracle 數(shù)據(jù)庫

2011-05-26 10:30:12

Oracle數(shù)據(jù)庫約束
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩一区二区三区精品 | 亚洲精品一区二区网址 | 91精品国产综合久久婷婷香蕉 | 综合色婷婷 | 超碰在线播 | 欧美激情视频一区二区三区在线播放 | 精品在线一区 | 亚洲不卡av在线 | 色一情一乱一伦一区二区三区 | www国产成人免费观看视频,深夜成人网 | 成人精品一区二区三区中文字幕 | 国产精品免费观看 | 国产一区二区三区久久久久久久久 | 国产美女黄色片 | 成人一区精品 | 日韩在线xx | 在线观看视频中文字幕 | 四虎最新视频 | 久久精品一级 | 欧美激情a∨在线视频播放 成人免费共享视频 | 精品丝袜在线 | 亚洲iv一区二区三区 | 国产一区二区免费电影 | 精品久久久久久亚洲综合网 | 久久久久久久成人 | 日日干干夜夜 | 丁香五月网久久综合 | 国产伦精品一区二区三区高清 | 国产7777 | 欧美一级久久 | 亚洲一区二区精品视频 | 午夜在线观看免费 | 国产精品国产三级国产a | 国产亚洲精品综合一区 | 日韩一三区 | 久热国产精品视频 | 成人av在线播放 | 午夜视频在线免费观看 | 成人性视频在线播放 | 在线观看视频你懂得 | 成人精品国产一区二区4080 |