分頁,直接通過SQL取分頁資料

2022-09-01 03:27:16 字數 1319 閱讀 4756

乙個列表頁面,之前程式設計師用了「wuqi.webdiyer」的分頁外掛程式,慢,且莫明出錯。看了下**,覺得冗餘太多,故決定優化一下。

從網上找了些資料,考慮直接在sql底層,直接只取當前頁的資料,再繫結,這樣效率應該會高些。

核心的sql查詢語句是這樣的:

select

top@size

*from (@sqlstring

) a

where

@key

<

= (select

min(@key) from (select

top@star

@key

from (@sqlstring) a order

by@key

desc

) a)

and@key

>= (select

min(@key) from (select

top@end

@key

from (@sqlstring) a order

by@key

desc

) a)

order

by@key

desc

其中:

@size:一頁的數量;

@sqlstring:原始查詢語句;

@key:關鍵字段/排序字段,它應是唯一字段;

@star:開始記錄數索引,star = size*(p-1)+1;

@end:結束記錄數索引,end = size*p+1;

若排序不同,則**應做相應變化:

select

top@size

*from (@sqlstring

) awhere

@key

>

= (select

max(@key) from (select

top@star

@key

from (@sqlstring) a order

by@key

asc) a)

and@key

<= (select

max(@key) from (select

top@end

@key

from (@sqlstring) a order

by@key

asc) a)

order

by@key

asc

我就是這樣構建取資料集的方法,然後把相關引數傳進來,拼接查詢,返回資料集繫結即可。

這個方案暫時未發現出錯,效率也有所提公升。

SQL分頁資料查詢

在許多資料庫應用系統中,會對資料進行大量的查詢操作。當查詢資料量比較大時查詢所用的時間就會變得較慢,所以我們希望可以分批的獲取資料。特寫了乙個儲存過程用於分批獲取資料。鑑於游標效率低,故此處沒有採用。create procedure selectpage tablename nvarchar 64 ...

爬取動態分頁資料案例

爬取東方財富 的財經新聞資料 1.爬取頁面中的標題和對應的內容 標題 內容 2.進行分頁操作,爬取當前頁面所有頁碼對應的標題和內容資料 3.不可以使用selenium 4.進行任意形式的持久化儲存 通過對 的分析發現翻頁時,有ajax資料報分析資料報的url發現,翻頁改變url中的引數,共20頁 u...

Redis儲存分頁資料

普通分頁 一般分頁做快取都是直接查詢出來,按頁放到快取裡,但是這種快取方式有很多缺點。如快取不能及時更新,一旦資料有變化,所有的之前的分頁快取都失效了。比如像微博這樣的場景,微博下面現在有乙個頂次數的排序。這個用傳統的分頁方式很難應對。一種思路 最近想到了另一種思路。資料以id為key快取到redi...