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

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了格爾木免費(fèi)建站歡迎大家使用!
分頁(yè)的控件實(shí)在很方便,以前的處理方式就是數(shù)據(jù)都拿出來(lái),然后由控件進(jìn)行處理,一般數(shù)據(jù)量不大的時(shí)候應(yīng)該說(shuō)感覺(jué)不出來(lái)優(yōu)劣,但由于每次從數(shù)據(jù)庫(kù)取的時(shí)候都是取所有的數(shù)據(jù),肯定會(huì)增加數(shù)據(jù)庫(kù)的壓力,傳輸?shù)臄?shù)據(jù)庫(kù)多了對(duì)網(wǎng)絡(luò)帶寬也會(huì)產(chǎn)生壓力的。很有可能查出來(lái)1萬(wàn)條數(shù)據(jù),***顯示只用到啟用50條,翻頁(yè)的時(shí)候又重新去查1萬(wàn)條數(shù)據(jù),顯示之后的的又50條。
以下的分頁(yè)SQL比較常見的,在SQL Server也有對(duì)應(yīng)的使用TOP關(guān)鍵字的版本,記得剛學(xué)Oralce的時(shí)候就想著怎么不能rownum between minValue and maxValue的用法。與最初的疑惑的原理一樣,rownum是在查詢過(guò)程中生成的,因此以下的SQL其實(shí)是查出來(lái)5300行,然后扔掉了前面5000行,返回后面的300行。當(dāng)然這種已經(jīng)進(jìn)了一大步的,由數(shù)據(jù)庫(kù)返回的數(shù)據(jù)變少的,只是當(dāng)查詢的頁(yè)數(shù)比較大的時(shí)候,查詢還是存在一定的浪費(fèi)。
- select *
- from (select a.*, rownum as rnum
- from (select * from yz_bingrenyz) a
- where rownum <=5300)
- where rnum >= 5000
Linq提供了Skip和Take的API可以用于分頁(yè),由于使用的是Entity Framework,在好奇的驅(qū)使下用EFProfiler查看生成的SQL,才知道這樣以下分頁(yè)更好。 主要就是使用了row_numer()over()這樣的分析函數(shù),可以直接找到那第5000行開始的地方,然后在取出30行就行了。
- select *
- from (select *
- from (select t.*,
- row_number() OVER(ORDER BY null) AS "row_number"
- from yz_bingrenyz t) p
- where p."row_number" > 5000
- ) q
- where rownum <= 30
比較分析:
本機(jī)測(cè)試前者耗時(shí)1.3s,后者僅0.25s,從以下的執(zhí)行計(jì)劃也能看出差異來(lái)。
實(shí)際應(yīng)用
如果每次查詢都要寫這種SQL那肯定比較麻煩,可以采用存儲(chǔ)過(guò)程進(jìn)行封裝,但由于要?jiǎng)討B(tài)執(zhí)行SQL,效率肯定又要打折扣,所以在ASP.NET中用C#封裝函數(shù)比較好,對(duì)于沒(méi)有使用實(shí)體框架的而用ADO.NET的,傳入表名 、主鍵名、頁(yè)數(shù)、要取的行數(shù)作為參數(shù),用DBCommand進(jìn)行執(zhí)行返回結(jié)果即可。
新聞標(biāo)題:Oracle數(shù)據(jù)庫(kù)查詢高效分頁(yè)
文章網(wǎng)址:http://m.fisionsoft.com.cn/article/djjojcp.html


咨詢
建站咨詢
